0

这是问题链接 项目欧拉,问题没有。21
我的代码在 python 中,

def d(n):
    A=[]    
    x=0
    y=0
    for i in range(1,n/2+1):
        if n%i==0:
            A.append(i)

    for i in A:
        x+=i
    B=[]
    for i in range(1,x/2+1):
        if x%i==0:
            B.append(i)
    for i in B:
        y+=i
    if y==n:
        return 1
    else:
        return 0

sum=0
for j in range(1,10000):
   if d(j)==1:
        sum+=j
print sum

我的答案是40284显示错误,谁能告诉我原因

4

1 回答 1

1

仔细阅读说明:

如果 d(a) = b 且 d(b) = a,其中 a ≠ b,则 a 和 b 是友好的对,并且 a 和 b 中的每一个都称为友好数。

您未能检查此约束。在您的代码中插入if x == n: return 0某处,结果应该是正确的。

于 2013-10-12T09:38:10.810 回答