我寫了一個函數來告訴某個數字是否是一個完美數字:如果它的所有因子的總和等於它自己,那麼數字就是一個完美數字。無限循環調試
功能是這樣:
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. –