2013-10-11 53 views
0

這裏的問題是鏈接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它顯示錯誤的,任何人都可以仔細地給我的理由

+0

嘗試使用可以在紙張上手動計算的較小數字。它工作正常嗎?如果沒有,請調試您的代碼並根據您的解決方案在紙上查看進度。 –

+0

它給出了正確的結果案例 – singhiskng

回答

1

閱讀說明:

如果d(A)= b和d(b)= A,其中a≠b,叔母雞a和b是友好的 對,a和b中的每一個稱爲友好號碼。

您無法檢查此限制。在代碼的某處插入if x == n: return 0,結果應該是正確的。

+0

中給出的例子給出了我非常感謝,非常感謝 – singhiskng