【发布时间】:2015-06-30 23:57:58
【问题描述】:
只是想对我的素数生成器提供一些反馈。例如可以吗,它是否使用了很多资源等等。它不使用任何库,它相当简单,并且它反映了我目前的编程技能状态,所以不要因为我想学习而退缩。
def prime_gen(n):
primes = [2]
a = 2
while a < n:
counter = 0
for i in primes:
if a % i == 0:
counter += 1
if counter == 0:
primes.append(a)
else:
counter = 0
a = a + 1
print primes
【问题讨论】:
-
你可以看看这个问题:stackoverflow.com/questions/567222/…
-
如果数字是 9,这是否有效?计数器变量的目的是什么? PS:
a = a + 1可以简化为a += 1 -
特别是已接受答案 (stackoverflow.com/a/568618/3646530) 中的 Erastothenes 筛实施。它确实涉及使用生成器。您可以在此处获取有关什么是生成器的更多信息:stackoverflow.com/a/231855/3646530
-
您可以使用生成器算法而不是返回列表。你会这样节省内存。此外,生成小于一个数的素数的首选算法是 Erastothenes 筛法。
标签: python