ホームページ > Java > &#&チュートリアル > 素数を効率的に生成するにはどうすればよいでしょうか?

素数を効率的に生成するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-11-03 20:43:02
オリジナル
192 人が閲覧しました

How Can We Efficiently Generate Prime Numbers?

優雅かつ効率的に素数を生成する

プログラミングの分野では、素数を生成するエレガントで効率的な方法を見つけるのは古典的なことです。チャレンジ。簡潔さとパフォーマンスのバランスを取るアプローチを検討してみましょう。

n 以下の素数の数を pi(n) ≈ n / log(n) として推定する素数定理の使用を考えてみましょう。 。この推定値は、素数を識別するために使用できるふるいのサイズの上限を提供します。

エラトステネスの篩としても知られるふるい法は、数値の範囲を反復処理し、数値以外のものをすべて除去します。それらを複合としてマークしてプライムします。このタスクでは、BitSet を利用して素数のセットを表し、各ビットが範囲内の数値に対応します。

以下は、この洗練された効率的な素数生成メソッドの Java 実装です。

<code class="java">public static BitSet computePrimes(int limit) {
    BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 0; i * i < limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j < limit; j += i) {
                primes.clear(j);
            }
        }
    }
    return primes;
}</code>
ログイン後にコピー

この方法は、一般的なラップトップで最初の 100 万個の素数を約 1 秒で効率的に生成します。精度と速度の組み合わせにより、さまざまなコンピューティング シナリオで素数を生成するための貴重なツールとなります。

以上が素数を効率的に生成するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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