このタスクは、Python で素数の効率的な無限ジェネレーターを作成することです。ここでの重要な用語は「無限」です。これは、ジェネレータが素数の数を消費するかどうかを知らずに素数の無限のストリームを生成できることを意味します。
提供されているコードは、erat2、erat2a、erat3 の 3 つの最適化された Sieve 関数を提供します。各関数は、速度と効率の点で以前の関数より徐々に改善されています。
erat2a 関数は、erat2 関数の修正版ですが、ここには含まれていません。奇数チェックを最適化し、候補に対して実行されるステップ数を減らすことにより、erat2a は生成を 20 ~ 25% 高速化します。
erat3 は、モジュロ 30 という事実を利用して、erat2a をさらに強化します。 、2、3、5 を除くすべての素数は、8 つの数値 (1、7、11、 13、17、19、23、29)。これにより、erat3 は候補以外の奇数をより効率的に除外できるようになり、速度が 35 ~ 40% 向上します。
さまざまなハードウェア構成でのベンチマークは、パフォーマンスの向上を示しています。
Atom 330 Ubuntu 9.10 サーバーでは、erat3 は Erat2 よりも優れたパフォーマンスを発揮します。
AMD Geode LX Gentoo ホーム サーバーでは、erat3 は再び大幅なパフォーマンスの向上を示し、Python 2 と 3 の両方で他の関数を上回りました。
これらの最適化により、 Sieve 関数は、素数を効率的に生成する際に大きな利点をもたらし、さまざまな数学的および計算に適しています。アプリケーション。
以上がPython で効率的な無限素数ジェネレータを作成するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。