2016-04-07 36 views
-2

我正在研究一個代碼,這是迄今爲止我所有的。我被困在這一點上。任何幫助將不勝感激。用於布爾值函數perfect(n)的程序,根據參數n的值是否爲完美數分別計算並返回布爾值True或False。python中的完美數字

def main(): 
    numPerfects = eval(input("How many perfect numbers do you want to find?")) 
    perfectsFound=0 
    possiblePerfect=1 
    while(perfectsFound < numPerfects): 
     if (perfect(possiblePerfect)): 
      perfectsFound += 1 
      print ("{0:0}}.{1:0}".format(perfectsFound, possiblePerfect)) 
     #end if 
    #end while 
#end main 

main() 
+5

我投票結束這個問題作爲題外話,因爲這既不是代碼編寫,也不是教程服務 – jonrsharpe

回答

0

您可以通過檢查做到這一點,如果所有的「可以」分裂的「數量」值加起來,即「數量」的雙重:

def isperfect(n): 
    factors = [1]+[i for i in range(2,n+1) if n%i == 0] 
    if sum(factors) == 2*n: 
     return True 
    return False 

for i in range(1000): 
    if isperfect(i): 
     print(i) 

,結果是:

6 
28 
496 
+0

我在運行代碼時收到此錯誤。你知道這意味着什麼嗎?回溯(最近一次調用最後一次): 文件「/Users/kalebdill/Documents/Untitled.py」,第11行,在 isperfect() TypeError:isperfect()缺少1所需的位置參數:'n' – Chris

+0

是的,但是你沒有從運行這段代碼中得到這個錯誤。這是說你沒有給你提出'isperfect()'的意見。你必須給它一個數字。例如:'isperfect(10)'。 – armatita

+0

@Chris如果這個答案幫助你解決了你的問題,你應該接受它。 – armatita