-1

我知道我的第一个函数是正确的,它可以验证一个完美的数字(即 6、28、496)。但是,我正在努力打印完美数字列表。这意味着如果我调用 listPerfect(500),我无法列出数字 6、28 和 496。我错过了什么?

谢谢你看我的问题。

def perfect(n):
    x=0
    for i in range(1,n):
        if n%i==0:
            x+=i
        else:
            x=x
    if x==n:
        return True
    else:
        return False


def listPerfects(n):

    for i in range(1,n+1):

        if i == perfect(n):
            print(i)
        else:
            i=i
4

1 回答 1

1

perfect(i) 返回 True/False,您正在将其与 i 进行比较。

将其更改为

if i == perfect(n): # Remove this 

if perfect(i): #it should work 
于 2014-03-03T06:58:14.897 回答