python中的完全数
我正在编写一个代码,到目前为止,这就是我所拥有的全部。我被困在这一点上。任何帮助都将不胜感激。布尔值函数perfectn的程序,它分别根据参数n的值是否为完美数计算并返回布尔值True或Falsepython中的完全数,python,loops,while-loop,Python,Loops,While Loop,我正在编写一个代码,到目前为止,这就是我所拥有的全部。我被困在这一点上。任何帮助都将不胜感激。布尔值函数perfectn的程序,它分别根据参数n的值是否为完美数计算并返回布尔值True或False def main(): numPerfects = eval(input("How many perfect numbers do you want to find?")) perfectsFound=0 possiblePerfect=1 while(perfects
def main():
numPerfects = eval(input("How many perfect numbers do you want to find?"))
perfectsFound=0
possiblePerfect=1
while(perfectsFound < numPerfects):
if (perfect(possiblePerfect)):
perfectsFound += 1
print ("{0:0}}.{1:0}".format(perfectsFound, possiblePerfect))
#end if
#end while
#end main
main()
您可以通过检查可以分割一个数字的所有值加起来是否等于该数字的两倍来完成此操作:
def isperfect(n):
factors = [1]+[i for i in range(2,n+1) if n%i == 0]
if sum(factors) == 2*n:
return True
return False
for i in range(1000):
if isperfect(i):
print(i)
,结果是:
6
28
496
我投票结束这个问题,因为这既不是代码编写,也不是教程服务。我在运行代码时收到了这个错误。你知道这是什么意思吗?回溯上次调用:isperfect TypeError:isperfect缺少1个必需的位置参数:“n”是,但运行此代码时没有得到该错误。这是说你没有就你的“isperfect”呼吁进行辩论。你必须给它一个数字。例如:“isperfect10”。@Chris如果这个答案帮助你解决了问题,你应该接受它。