在 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中文網其他相關文章!