我对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