• に登録
  • 歴史・時代・伝奇

素数判定

巨大な数が素数であるかどうかの判定は大変に難しいのです。

素数判定法として有名なところではフェルマーテストというものがあります。
フェルマーの小定理はpが素数でaとpが互いに素であるとき

a^(p-1) mod p = 1

が成立する。故にこれに合格できるなら素数、だったらいいんですけどね……。
このテストをすり抜けてしまう擬素数というものがあります。
特に有名なのがカーマイケル数ですね。一番小さいカーマイケル数は561、3x11x17な合成数です。
で、このカーマイケル数のようなフェルマーテストを通過してしまう擬素数をどうにかしようというのがミラー・ラビンテストです。

大雑把な説明としては拡張リーマン予想が正しければ、の前提でテストを作ったのがゲイリー・ミラー、その拡張リーマン予想が正しい、という前提を外して確率で扱うように改良したのがマイケル・ラビン。なのでミラー・ラビンテスト、です。

で、テストで誤判定が一回あたり1/4とありますが、これは最悪値で殆どの場合は1/10以下です。
ただそれでも誤判定は0にならないので「確率的素数」となるわけです。

逆にこの「拡張リーマン予想が正しい」前提ならば確率的素数ではなく確定で素数と判定できます。ただし桁数が増えるとテスト回数が増えて大変なことになります。
作中で出てきたRSA1024ビットキーに必要な512ビット素数だとおおよそ25万回です。
近年使われる4096ビットキーの場合、2048ビットの素数が必要なのでなんと400万回必要です。やったね(?)

ちなみに拡張リーマン予想の親戚であるリーマン予想ってミレニアム懸賞問題なんですよね。ポアンカレ予想以外解決していないアレです、アレ。

正しいかどうかわかんないし、計算も多いし、僕はミラー・ラビンテストの確率的素数でいいです、はい。

1件のコメント

  • ミレニアム問題といえば、今まあまあ話題になっているナビエ・ストークス方程式。こんな形してます

    ∂v/∂t + (ν・▽)ν = -(1/ρ)▽ρ + ν(▽^2)ν + f

    やはり顔文字、顔文字にしか見えない……w
    ∂と▽が悪いんだ
コメントの投稿にはユーザー登録(無料)が必要です。もしくは、ログイン
投稿する