素数判定法 東京都立大学理学部数学学科 中村研究室 0340465 市来 信吾 目標 多項式時間素数判定法の紹介 計算数論システムNZMATHへの 実装と実験 はじめに 試し割り 1/ 2 計算量→ O(n lg lg n lg lg lg n) 多項式時間の計算量 Miller-Rabinテスト AKS 準備(ランダウの記号) f ( x) O( g ( x)) x0 , c, s.t. x x0 f ( x) cg( x) f ( x) O ( g ( x)) ~ 1 0, f ( x) O( g ( x) ) 素数判定法の種類[1/2] 決定性素数判定法(deterministic primality test) 自然数n が「素数」か「否」か判定する • 試し割り • APR (Adleman-Pomerance-Rumely) • AKS (Agrawal,Kayal,Saxena) 素数判定法の種類[2/2] 確率的素数判定法(probabilistic primality test) 自然数n が「合成数」か「判定不能」か判定す る • Fermat テスト • Solovay-Strassen テスト • Miller-Rabin テスト 多項式時間アルゴリズム Fermat の小定理 素数 p と任意の整数 a に対し a a (mod p) p 特に p|a a ならば p 1 1 (mod p) Miller-Rabin(概要) n 1 2 q s (n, q odd, s Z0 ) 2 s 1 q b , b , . . . , b n が素数 Fermatの小定理より q 2q n1 b b 1 (mod n) q b 1 (mod n) , or 2s q 1 (mod n) がある Miller-Rabin(アルゴリズム) [1/2] 入力:n N , 2 b ( N ) n , k N 出力:n は“合成数” or“判定不能” {St ep1} n - 1 2 q ( s, q N ) s {St ep2} i 0, r b {St ep3} q (mod n) if (i 0 and r 1) or (i 0 and r n 1) nは判定不能 , t erminat e Miller-Rabin(アルゴリズム) [2/2] {St ep4} i i 1, r r 2 {St ep5} if i s go t o St ep3 k回反復 nは合成数 (modn) Miller-Rabin 拡張リーマン仮説(ERH)の下で決定 性素数判定法 計算量→ ERHの下で 4 O(lg n lg lg n lg lg lg n) AKS(概要) a Z, n N, n 2, gcd(a, n) 1とする. n が素数 , またそのときに限り次式が成り立つ. ( X a ) X a (mod n) n n この式を以下のように改良する. ( X a ) X a (mod X 1, n) n n 高々 r 1次の多項式になる. r AKS(準備) n がperfectpower→ b o r (n) は法 r での n の位数 na (a, b N2 ) オイラーの 関数 (n) → 以下の自然数で互いに素な数の個数 n AKS(アルゴリズム)[1/2] 入力:n N 出力:n は“ P RIME”or “ COMP OSIT E” {St ep1} if n is perfect pow er out put COMP OSIT E {St ep2} find t hesmallest r sut h t hato r (n) lg 2 n {St ep3} if 1 gcd(a, n) n for somea r out put COMP OSIT E AKS(アルゴリズム)[2/2] {St ep4} if n r out put P RIME {St ep5} for a 1 t o (r ) lg n if ( X a ) n X n a (mod X r 1, n) out put COMP OSIT E {St ep6} out put P RIME AKS(計算量) St ep1: p進Newt on法を用いるとO ~ (lg 3 n) St ep2: O ~ (lg 2 n lg r )だがr lg 5 n なのでO ~ (lg 7 n) St ep3: Euclidの互除法を用いて O (r lg n) O (lg 6 n) St ep4: O (lg n) St ep5: FFTを使えば多項式の冪は O ~ (r lg 2 n) O (r (r )lg n) O (lg ~ 3 ~ 10.5 n) O ~ (lg10.5 n) 実際には r O (lg 2 n) なので O ~ (lg 7.5 n) 実験 NZMATHをベースにMiller-RabinとAKS を実装 各桁の素数10個の計算時間の平均を 算出 Core2Duo2.66GHz, 2GB 結果[1/2] 桁 Miller (秒) APR AKS 6077.856 10 0.003 0.059 20 0.012 0.212 - 30 0.025 0.918 - 40 0.034 1.238 - 50 0.047 6.675 - 100 0.159 26.978 - 300 2.052 - - 500 8.369 - - 1000 54.156 - - 結果(AKS) [2/2] (秒) 桁 2 3 4 5 6 7 8 9 10 11 Step5 0.09 0.88 6.40 64.11 176.02 474.38 1109.12 2675.04 6017.75 12270.60 Total 0.18 1.37 7.49 67.89 182.52 485.93 1130.96 2711.54 6077.86 12367.45 結論と今後の課題 ERHは通常は正しいとされているので実 用的にはMiller-Rabinが有用 AKSの多項式計算部分の改良 HPの更新 以上で発表を終わります ご清聴ありがとうございました
© Copyright 2024 ExpyDoc