我對Python相當陌生,並且試圖通過執行Project Euler問題來練習編程。爲了解決7th problem,我決定首先使用for循環來構建一個簡單的主要生成函數,這似乎不起作用。python中的素數生成器返回多個複合物而不是質數
這裏是我的代碼:
primes = [2]
for n in range(2, 10):
for m in range(2, n):
if not(n % m):
primes.append(n)
print primes
輸出是[2,4,6,6,8,8,9]
什麼,而不是我的本意,即[2,3,5,7]
。數學似乎對我來說是正確的:選擇一個自然數,n
,大於2。對於大於1但小於n
的所有自然數m,檢查n
是否可以被m
整除。如果不是,則在素數列表中加n。任何人都可以告訴我我的代碼有什麼問題嗎?
P.S.雖然我知道還有其他幾種(更好的)產生素數的方法,但我有興趣使我的方法(代碼)有效。
優秀的答案!謝謝你的幫助。 – chubbycantorset 2014-12-05 07:55:57
根據您的建議,我添加了break和else語句,並將[2,3,5,5,7,7,7,7,7,9]作爲輸出。你知道爲什麼它會多次返回5和7嗎? – chubbycantorset 2014-12-05 07:59:02
你把其他東西放在錯誤的深度嗎?這不是我運行我提交的確切代碼時得到的輸出。 – lunixbochs 2014-12-05 08:01:34