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 中国語 Web サイトの他の関連記事を参照してください。