n = int(input("input n"))
prime = [2]
base = 3
order = 0
while base < n + 1:
if order < len(prime):
if base % prime[order] == 0:
order = len(prime)
else:
order += 1
else:
prime.append(base)
order = 0
base += 1
print (prime)
我想創建一個從1到給定數字'n'的素數列表。 (忽略數小於3的情況下)Python主要列表錯誤
我打算做的是:
- 帶來的第一個數字從3到n(我們稱之爲基礎)
- 在比較基礎,第一個數字首要列表(在這種情況下,2)
- 如果基數不可分,則將它與素數列表中的下一個數字進行比較。
- 重複步驟3,直到比較素數列表中的所有數字或者至少一個數字可以在素數列表中基數整除。
- 如果基數與素數列表中的所有數字相比並且不能被它們中的任何數字整除,則將基數追加到素數列表。
- 將基數值增加1,並重復步驟2至5直到base = n。
無論我爲n放什麼樣的價值,我只在打印的主要列表中獲得單值2。請幫助找出哪個部分是錯誤的。
[Sieve Atkin在Python中的實現]可能的重複(http://stackoverflow.com/questions/21783160/sieve-of-atkin-implementation-in-python) –