ホームページ > バックエンド開発 > Python チュートリアル > Python で効率的な無限素数ジェネレータを作成するには?

Python で効率的な無限素数ジェネレータを作成するには?

DDD
リリース: 2024-12-19 12:32:09
オリジナル
264 人が閲覧しました

How to Create an Efficient Infinite Prime Number Generator in Python?

Python で素数の効率的な無限ジェネレーターを実装する方法?

このタスクは、Python で素数の効率的な無限ジェネレーターを作成することです。ここでの重要な用語は「無限」です。これは、ジェネレータが素数の数を消費するかどうかを知らずに素数の無限のストリームを生成できることを意味します。

提案されたソリューション: 3 つの最適化されたふるい関数

提供されているコードは、erat2、erat2a、erat3 の 3 つの最適化された Sieve 関数を提供します。各関数は、速度と効率の点で以前の関数より徐々に改善されています。

erat2a

erat2a 関数は、erat2 関数の修正版ですが、ここには含まれていません。奇数チェックを最適化し、候補に対して実行されるステップ数を減らすことにより、erat2a は生成を 20 ~ 25% 高速化します。

erat3

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート