我写了一个函数来告诉某个数字是否是一个完美数字:如果它的所有因子的总和等于它自己,那么数字就是一个完美数字。无限循环调试
功能是这样:
def is_perfect(n):
l = [1]
temp = n
while temp != 1:
for i in range(2,n):
if temp % i ==0:
l.append(i)
temp = int(temp/i)
break
if sum(l)==n:
return True
else:
return False
我希望它根据输入返回boolean值。 然后我想用一个for循环找出所有完美的数字与我上面的函数,但似乎有一个无限循环。我错在哪里?
a=[]
for x in range(1,1001):
if is_perfect(x):
a.append(x)
print([x for x in a])
温度从不是1. –