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以下的友好数字之和。
答案 0 :(得分:4)
仅打印sum2
,而不打印f(sum2)
。 sum2
应该已经代表了所有友好数字的总和,这正是问题所要求的。