在 Python 中优化简单素数生成器
提供的 Python 代码旨在生成素数,但需要改进效率。
原始代码的问题:
改进的代码:
import math def main(): count = 3 while True: isprime = True for x in range(2, math.ceil(math.sqrt(count)) + 1): if count % x == 0: isprime = False break if isprime: print(count) count += 1
解释:
高级素数生成:
为了更有效地生成素数,埃拉托斯特尼筛法推荐。这是一个带注释的优化 Python 实现:
def gen_primes(): D = {} q = 2 while True: if q not in D: yield q for later in range(q * q, 1000000, q): D[later] = [q] else: for later in range(q + D[q][0], 1000000, q): D.setdefault(later, []).append(q) del D[q] q += 1
以上是如何在 Python 中优化简单的素数生成器?的详细内容。更多信息请关注PHP中文网其他相关文章!