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

素数をエレガントに生成するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2024-11-04 05:33:01
オリジナル
659 人が閲覧しました

How Can We Generate Prime Numbers with Elegance?

優雅な素数の生成

プログラミングでは、素数生成関数の簡潔で読みやすい実装の必要性がよく発生します。そのような関数の 1 つであるgeneratePrimes は、最初の n 個の素数のリストを生成することを目的としており、どのアプローチが最も洗練されているかという疑問が生じます。

基本的な実装

1 つの一般的な方法には、簡単な方法が含まれます。最初のいくつかの素数 (2、3) を含むリストから開始し、素数を検証しながら次の素数を段階的に追加する反復アプローチ。この実装は機能しますが、明示的なループ構造と冗長チェックの可能性があるため、洗練さに欠ける可能性があります。

Sieve アルゴリズムの利用

より洗練された解決策は、次のような sieve アルゴリズムを採用することです。エラトステネスのふるい。このメソッドは、指定された制限までの数値の潜在的な素数を表すブール値の配列を初期化します。 2 から開始して、各素数の倍数を非素数として繰り返しマークし、それらをリストから効果的に削除します。

<code class="java">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>
ログイン後にコピー

このアプローチは、シンプルさと効率性を兼ね備えており、洗練された実装になります。

数学的推定の活用

さらに洗練するために、指定された制限までの素数の数の推定を使用できます。素数定理から導かれたこの推定値は、その範囲内の素数の潜在的な数の上限を提供します。この推定を利用してふるいのサイズを決定すると、解の優雅さがさらに高まります。

数学的推定とふるいアルゴリズムの組み合わせにより、優雅さと効率の両方が得られ、素数を生成するための魅力的な選択肢となります。

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

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