2016-01-21 20 views
1

我正在編寫一個查找素數的程序。對列表中的單個元素執行分區

prime = [2] 
for k in range(3,100) 
    if k%prime != 0 
     prime.append(k) 
print(prime) 

當我運行程序出現錯誤:

TypeError: unsupported operand type(s) for %: 'int' and 'list' 

我想,當我試圖通過列表來劃分錯誤出現了,但我真的不知道該怎麼做。任何幫助,將不勝感激。

+0

'k%prime'你試圖用int和列表來使用模分割。我不確定你想要做什麼,但這是行不通的。 –

+0

prime = 2 – Tobias

+0

我認爲這是問題所在。我想創建一個包含兩個列表的列表,然後如果它是素數,請將其附加到素數列表中。我想用列表中的所有元素來劃分k。 –

回答

0

你必須在整個黃金名單進行迭代,並確保模量爲非零的列表中的所有項目

prime = [2] 
for k in range(3,100): 
    if all(k % p != 0 for p in prime): 
     prime.append(k) 

優化(不檢查其它素數,一旦一個主要因素是找到):

prime = [2] 
for k in range(3,100): 
    for p in prime: 
     if k % p == 0: 
      break 
    else: 
     prime.append(k) 
+0

您在第一次之後忘了「:」!但是謝謝你的幫助!另外,我不知道你的意思是「模數不爲零」。你的意思是整數「K」? –

+0

我也不確定變量「p」是什麼意思?它不應該是「素數」嗎? –

+0

'%'運算符稱爲模運算符。它在'x/y'後給出餘數。如果'x%y == 0',那麼意味着'y'是一個因子'x'。素數除了自身和1之外沒有其他因素,因此如果一個數的所有可能因素都具有非零模數,則該數不具有因素,並且必須是素數。 –

相關問題