我無法得到正確的輸出如下:邏輯錯誤項目euler 23?
一個完美的編號是針對其適當除數的總和正好等於號。例如,28的適當因數的和將是1 + 2 + 4 + 7 + 14 = 28,這意味着28是一個完美的數字。
如果n的合適除數之和小於n,則n稱爲不足,如果和超過n,則稱n爲大數。
由於12是最小的豐富數字,1 + 2 + 3 + 4 + 6 = 16,可以寫成兩個豐富數字之和的最小數字是24.通過數學分析,可以看出所有大於28123的整數都可以寫成兩個豐富數字的總和。然而,即使知道不能表示爲兩個豐富數的總和的最大數小於該極限,也不能通過分析進一步減少該上限。
查找所有不能寫成兩個豐富數字之和的正整數的和。
def check(n):
s=0
for i in xrange(1,n/2+1):
if n%i==0:
s+=i
return s>n
l=100
sieve=[True]*l
for i in xrange(12):
sieve[i]=False
abundant=[]
for i in xrange(12,l):
if check(i):
abundant.append(i)
for i in xrange(len(abundant)-1):
for j in xrange(i+1,len(abundant)):
if abundant[i]+abundant[j]<l:
if sieve[abundant[i]+abundant[j]]==True:
sieve[abundant[i]+abundant[j]]=False
print abundant[i]+abundant[j]
print sum([i for i in xrange(len(sieve)) if sieve[i]])
如果您正在尋找助您檢查碼(正確或不正確),[代碼審查(http://codereview.stackexchange.com)可能比StackOverflow更好。同時,這個問題上有數百個Python發佈的答案;你有沒有搜索過他們,並閱讀他們,看看你在做什麼不同?最後,你做了什麼來調試你的代碼,比如'打印'中間值來查看它是否出錯了? – abarnert
@abarnert在CodeReview上關閉此問題:「您的問題必須包含工作代碼,供我們在此處查看。」 – stewSquared