Python完美数计算

标签 python perfect-numbers

我在用 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 因为你想要对因素求和,而不是对它们进行计数;当您应该打印 jk 时,您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/

相关文章:

java - 不打印完美数字

python - "can' t 在编码的 urlopen 请求上将字节连接到 str"

python - 如何在多核上运行 Keras?

python - 如何在 Python 中分割触摸字符?

python - 使用Python连接器插入字符串时Mysql语法错误

python - 文本小部件 tkinter

c - 1 到 1000 之间的完美数字

java - 欧拉项目 #23 (Java)。我不明白出了什么问题。答案已关闭 64

java - 查找并打印 10000 以下的完全数(Liang,Java 简介,练习 5.33)

java - 使用 Java 打印 1-100 之间的完美数字