範囲 (1, N) の最もコンパクトな素数マッピングを決定するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-04 03:29:29
オリジナル
551 人が閲覧しました

How to Determine the Most Compact Prime Mapping for a Range (1, N)?

範囲 (1, N) の最適にコンパクトな素数マッピングの決定

最もコンパクトな素数マッピングを見つけることは、困難な作業となる場合があります。理想的なアルゴリズムでは、指定された範囲 (1, N) のメモリ消費量が最も少ないデータ構造が生成されます。

考えられるアプローチの 1 つは、一般的なプライム テストで最も高速であると考えられる AKS アルゴリズムです。大きな素数の場合、メルセンヌ素数などの特殊な形式の素数を探索することが有益である可能性があります。

ただし、限られた範囲内での汎用素数テストの場合は、より実用的で効率的なアルゴリズムを使用できます。

<code class="python">def isprime(n):
    """Returns True if n is prime."""
    if n == 2 or n == 3:
        return True
    if n % 2 == 0 or n % 3 == 0:
        return False

    i = 5
    w = 2

    while i * i <= n:
        if n % i == 0:
            return False

        i += w
        w = 6 - w

    return True</code>
ログイン後にコピー

このアルゴリズムは、素数 (2 と 3 を除く) が 6k - 1 または 6k 1 のいずれかの形式であるという事実を利用します。このアルゴリズムは、この範囲内の約数を効率的にチェックするため、範囲内の素数を決定するのに適しています。

速度が最優先され、範囲が明確に定義されている場合、フェルマーの小定理に基づいた擬似素数テストを実装すると、効率をさらに高めることができます。偽陽性 (カーマイケル数) を事前に計算し、二分探索を使用すると、さらに高速なアプローチが得られますが、範囲が制限されるという制限が伴います。

以上が範囲 (1, N) の最もコンパクトな素数マッピングを決定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!