projecteuler错误的答案

时间:2013-10-11 12:19:37

标签: python

这是问题链接project euler ,problem no. 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它显示错误,任何人都可以给我原因

1 个答案:

答案 0 :(得分:1)

仔细阅读说明:

  

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

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