我在用 python 计算完美数时遇到问题。显然代码在 VBA 中运行,所以我确信我在语法/缩进方面犯了一些错误。请帮忙!
这是我的代码:
Mynum=int(input("How many perfect numbers do you want?: "))
counter=0
k=0
j=2
i=1
while counter<Mynum:
for i in range (1,j-1):
if (j%i)==0:
k=k+1
if k==j:
counter=counter+1
print(i)
k=0
j=j+1
最佳答案
您的屏幕截图代码是两者中较好的一个,但存在以下几种问题:您的 k = k + 1
表达式应为 k = k + i
因为你想要对因素求和,而不是对它们进行计数;当您应该打印 j
或 k
时,您print(i)
:
Mynum = int(input("How many perfect numbers do you want?: "))
counter = 0
j = 2
while counter < Mynum:
k = 0
for i in range (1, j):
if (j % i) == 0:
k += i
if k == j:
counter += 1
print(j)
j += 1
但是,从更大的角度来看,这是寻找完美数字的错误方法 - 使用这种方法您不可能找到比前四个更多的数字:
How many perfect numbers do you want?: 5
6
28
496
8128
所以你不妨直接选择这些,而忘记询问用户想要多少。
一个更好的方法示例是使用 Lucas-Lehmer primality test 搜索梅森素数。当你找到一个时,计算 companion perfect number从那。这不需要太多代码,并且会超越您当前的方法。
关于Python完美数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39864603/