python中的完美数字

时间:2016-04-07 20:17:07

标签: python loops while-loop

我正在编写一个代码,这就是我到目前为止所做的一切。我被困在这一点上。任何帮助将不胜感激。用于布尔值函数perfect(n)的程序,其根据参数n的值是否是完整数来计算并返回布尔值True或False。

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()

1 个答案:

答案 0 :(得分:0)

您可以通过检查“可以”除以“数字”的所有值是否加起来为“数字”的两倍来实现此目的:

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