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 に答える