Primality testing 応用数学科 4年 5499053 鈴木 一也 目的 ・ LEDAを使用しての、素数判定アルゴリ ズムの実装と実験。 目次 1.はじめに… 2.用語解説 3.Fermat の小定理とは? 4.Fermat test のアルゴリズムの解説 5.Strong pseudoprimality testとは? 6.Strong pseudoprimality testの解説 7.ドイツ人の論文に載っていたアルゴリズム 1.はじめに… 我々は、ある一定の整数が素数であるかどう かを知りたい。 それには因数分解することにより、素数判定で きることが知られている。 しかし、少なくとも現時点では、primality testing が因数分解よりはるかに簡単であるこ とが、解かっている。 これから素数生について有効的な見込みのあ るアルゴリズムを紹介する。 2.用語解説 2.1 RSAとは? 2.2 カーマイケル数とは? 素数pに対し、整数aがな んであっても ap ≡ a(mod p) これから、 (a,p)=1 → ap-1≡1(mod p) 従ってある整数nが素数 でないことを示すには次 のテストをすればよい。 ある整数aが見つかり (a,n)=1 → an-1≠ 1(mod n) であればnは素数でない。 しかし、逆は成立せず (a,n)=1 → an-1≡1(mod n) となる合成数が存在す る。 このような合成数をカー マイケル数と呼ぶ。 2.3 rem と mod の違い。 2.Fermat の小定理とは? N:素数 a:Nで割り切れない整 数(∀a∈Z) とすると、 aN-1≡1 mod N が、成立する。 * しかし、逆の命題は 成り立たない。 合成数(素数以外 の数)であっても Fermatの小定理を 満たす数字が存在す る。そういった数字を 擬素数という。 3.Fermat test アルゴリズム の解説 入力:奇数である整数 N≧5 出力:合成数 か 擬素数 1. a∈{2,…,N-2}をランダ ムで、選ぶ。 2. b=aN-1 rem N の計算。 3. if b ≠ 1 then return 「合成数」 else return 「擬素数」 先ほど紹介したFermat の小定理 N:素数 a:Nで割り切れない整数 (∀a∈Z) aN-1≡1 mod N ← 4.Strong pseudoprimality test とは? Fermat test では、素数判定の正確さが あまりよくなかった。 これでは、RSA暗号には使えない。 そのため、Fermat test よりも 正確なプ ログラムを作成したい。 そこで、もう少し正確な、素数判定プログ ラム、Strong pseudoprimality test を、 次に紹介する。 5.Strong pseudoprimality testの解説 入力:奇数である整数 N≧5 出力:合成数 か 擬素数 1. a∈{2,…,N-2}をランダムで、 選ぶ。 2. a と N の gcd を求める。 3. N-1 = 2k m となる k,m を求 める。(k≧1) b0 = am rem N の計算 if b0 = 1 then return 「合成数」 b0 ≠ 1 `4番へ` if b0 = 1 then return 「合成数」 b0 ≠ 1 `4番へ` 4. for 1≦i≦k do bi ← b2i-1 rem N bk≠1 なら「合成数」 bk=1 なら `5番へ` 5. j ← min{0 ≦ i < k : bi+1 = 1} 6. g ← (bj + 1 , N) g=1 か g=N ならば「擬素数」 else `1番へ戻る。` 7.ドイツ人の論文に載ってい たアルゴリズム これからの課題 プログラムをLEDAになおす。 青い本の理解をすすめる(18章)。 2つのプログラムについての実験、考察。 (確率的にどのくらい、正しい値をかえす か?また、なぜこのプログラムで正しいの か?etc...)
© Copyright 2025 ExpyDoc