我有一个代码可以读取 2 个整数 m 和 n,并打印所有 perfect numbers m 和 n 之间(包括 m 和 n)。如果我输入 2 和 7,它应该给我 6。但它给我 13。出了什么问题?
m=int(input())
n=int(input())
myList=[]
for i in range(m,n+1):
for j in range(1,i):
if i%j==0:
myList.append(j)
sum=0
for i in range(0,len(myList)):
sum=sum+myList[i]
for j in range(m,n+1):
if sum==j:
sum=j
print(sum)
最佳答案
你让事情变得比需要的更复杂。您需要一个嵌套循环来解决这个问题。遍历范围内的每个数字,将值 x 设置为 0,每次找到可以整除的数字时,将其与 x 相加。如果在内循环结束时 x == i,那么您就有一个完美的数字并将其打印出来。如果您需要将其添加到列表中,请将其附加到您的列表中。您正在尝试保存所有中间数字,如果找到结果,只需保存结果即可。
for i in range(m,n+1):
x = 0
for j in range(1,i):
if i % j == 0:
x += j
if i == x:
print(i)
关于python - 为什么我的 Python 代码显示错误的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610724/