python练习程序(c100经典例19)

时间:2020-12-11 21:10:35

题目:

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

def foo(a):
    sra=a;
    lis=[1];
    while 1:
        for i in range(2,a+1):
            if a%i==0:
                lis.append(i)
                a=a/i;
                break;
        if a==1:
            break;
    l=len(lis);
    sum=0;
    for i in range(0,l):
        sum=sum+lis[i];
    if sum==sra:
        print sra

for i in range(1,1000):
    foo(i)