Python 编写一个寻找完美数字的程序-错误
我正在做一个寻找完美数字的程序(例如,6,因为它的因子1、2和3加在一起)。我的代码是Python 编写一个寻找完美数字的程序-错误,python,math,compiler-errors,listiterator,Python,Math,Compiler Errors,Listiterator,我正在做一个寻找完美数字的程序(例如,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
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
第47行是isperf(mprimk)
,第44行是prm=((2**i)-1)(2**i))/(2)
。任何协助都将不胜感激
谢谢 该错误清楚地表明您正在尝试调用一个int类型,该类型不可调用 实际上,这意味着你试图做一些像
123()
负责它的代码是
((2**i)-1)(2**i)
,因为您忘记了*
,它应该是((2**i)-1)*(2**i))/(2)
,所以分母中2
的paren是怎么回事?在Python中串联不是乘法。您需要实际写出符号。prm=((2**i)-1)*(2**i))/(2)
它给出了正确的输出。要快速测试梅森素数,从而计算甚至完美数,请参阅。
Traceback (most recent call last):
File "python", line 47, in <module>
File "python", line 44, in isperf
TypeError: 'int' object is not callable