アルゴリズム原理:
Miller-Rabin は確率的素数判定アルゴリズムで、フェルマーの小定理の一般化に基づいています。奇数 n について、n-1 を 2^r × d の形式に書き、以下の条件をテストします:
a^d ≡ 1 (mod n) 或 a^(2^i × d) ≡ -1 (mod n) 对某个 0 ≤ i < r
テストラウンド数と正確性:
- 確率的テスト:ランダムに底 a を選択。各ラウンドで誤差率を 1/4 に低減
- k ラウンドのテスト:理論上の誤差率 ≤ (1/4)^k、実際はこれをはるかに下回る
- 決定的テスト:n < 3,317,044,064,679,887,385,961,981 の場合、特定の基数集合 {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37} を使用して 100% 正確な結果を得られる
特殊ケース:
- 小素数:2, 3, 5, 7 などは直接判定
- 偶数:2 以外はすべて合成数
- Carmichael 数:フェルマーテストは通過するが実際は合成数(561 など)。Miller-Rabin は正しく識別できる