友好数字之和-欧拉任务21

时间:2018-07-30 18:04:38

标签: python

def f(a):
    sum=0
    for i in range(1,a):
        if(a%i==0):
            sum=sum+i

    return sum

sum2=0
for i in range(1,10000):
    q=f(i)
    if f(q)==i:
        sum2=sum2+i

print(f(sum2))

我是为project euler problem 21编写的,它给了我64436。 不幸的是,我自己找不到错误。我的错误在哪里?

  

让d(n)定义为n的适当除数之和   比n均分为n)。如果d(a)= b且d(b)= a,则a   ≠b,则a和b是友好对,并且a和b分别称为   友好的数字。

     

例如,220的适当除数是1,2,4,5,10,11,20,   22、44、55和110;因此d(220)=284。284的适当除数   是1,2,4,71和142;因此d(284)= 220。

     

计算所有10000以下的友好数字之和。

1 个答案:

答案 0 :(得分:4)

仅打印sum2,而不打印f(sum2)sum2应该已经代表了所有友好数字的总和,这正是问题所要求的。