首页 > 解决方案 > 我想打印 1 到 20 之间的所有完美数字

问题描述

n=1
Sum=0
while n<=20:
    for i in range(1,n+1):
        if(n%i==0):
            Sum+=i
        if(Sum==n):
            print(Sum)
    n+=1

我需要打印 1 到 20 之间的所有完美数字。

标签: python

解决方案


完美数在这里定义

为此,我将在函数中隔离完美的数字检查,如下所示:

def is_perfect(n):
    s = 0
    for i in range(1,n//2+1):
        if(n%i==0):
            s += i
    return n == s    

n=20
print([x for x in range(1, n+1) if is_perfect(x)])

推荐阅读