编写一个找到完美数字的程序 - 错误

Writing a program that finds perfect numbers - error

我正在开发一个寻找完美数字的程序(即 6,因为它的因数 1、2 和 3 加起来等于自身)。我的密码是

k=2
mprim = []
mprimk = []
pnum = []

def isprime(n):
    """Returns True if n is prime."""
    if n == 2:
        return True
    if n == 3:
        return True
    if n % 2 == 0:
        return False
    if n % 3 == 0:
        return False

    i = 5
    w = 2

    while i * i <= n:
        if n % i == 0:
            return False

        i += w
        w = 6 - w

    return True

def mprime(k):
    while k < 50:
        check = (2**k)-1
        if isprime(check) == True:
            mprim.append(check)
            mprimk.append(k)
            print check
            k+=1
        else:
            k+=1

mprime(k)

def isperf(lst):
    for i in lst:
        prm = (((2**i)-1)(2**i))/(2)
        pnum.append(prm)

isperf(mprimk)

print pnum

检查数字是否为素数并生成 mercenne 素数 的第一部分工作正常。这是我遇到麻烦的第二部分。我读到如果 2^k - 1 是质数,那么 ((2^k - 1)(2^k))/2 完美数 ,所以我正在使用该公式。

它给出的错误是

Traceback (most recent call last):
  File "python", line 47, in <module>
  File "python", line 44, in isperf
TypeError: 'int' object is not callable

第 47 行是 isperf(mprimk),第 44 行是 prm = (((2**i)-1)(2**i))/(2)。任何援助将不胜感激。

谢谢!

该错误清楚地表明您正在尝试调用不可调用的 int 类型。

在实践中,这意味着您尝试做类似 123()

的事情

负责它的代码是 ((2**i)-1)(2**i) 因为你忘记了 * 它应该是 (((2**i)-1)*(2**i))/(2)