初等整数論/合同式に基づく素数判定

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:Nav

合同式の応用の中でも特に重要なものとして、与えられた整数が素数であるかどうかを判定する問題がある。 もちろん、素数・合成数は整除性に基いて定義されているのだから、合同式と関連があるのは当然であるが、そのような自明なことを超えて、より深い応用が存在する。

フェルマーの小定理によれば p が素数で ap の倍数ではない整数ならば ap11(modp) である。しかし、以前に述べたように、これだけで与えられた整数 N が素数であるかどうかを判定することはできない。というのは 23401(mod341) のように N が合成数でも aN11(modN) となる場合があるからである。 さらに厄介なことに、 gcd(a,N)=1 となる任意の a に対し aN11(modN) となる合成数 N (カーマイケル数)が存在することも 先に述べた通りである。

一方、ウィルソンの定理N が素数であることの必要十分条件を与えているが、階乗を計算するための計算量が非常に大きいため、実用的ではない。


しかし、フェルマーの小定理の変形により、特殊な状況においては N が素数であることを比較的簡単に確認できる場合がある。


合同式に基づく素数判定

合成数を法とする剰余類の構造より a(modN) の位数は λ(N) 以下である。ところで λ(N)N1 が必ず成立し、かつ等号は N が素数であるとき、そのときに限り成り立つ。 より単純に、フェルマー・オイラーの定理から、a(modN) の位数は高々 φ(N) であるが、やはり φ(N)N1 が必ず成立し、等号は N が素数であるとき、そのときに限り成り立つ。

したがって φ(N)=N1N が素数であるための必要十分条件である。 さらに N が素数であるための必要十分条件は位数 N1 の剰余類が存在することだということがわかる(必要性は原始根の存在から導かれる)。


位数の法則から次の定理が導かれる。

定理 1

N が素数であるための必要十分条件は

aN11(modN),
N1 のすべての素因数 q に対して a(N1)/q≢1(modN)

となる a が存在することである。

この判定法はLucasが発見したもので、合同式に基づく素数判定法の中でも基本的なものである。これを一般化したものがメルセンヌ素数に対するLucas Testである。さて、この判定法は次のように拡張できる。

定理 2

N が素数であるための必要十分条件は、 N1 のすべての素因数 q に対して

aN11(modN),
a(N1)/q≢1(modN)

となる a が存在することである(a は各 q に対して異なっていてもよい)。

証明
N1=qiri と素因数分解する。各 qi に対応する a=a(qi) の位数は N の約数だが N/q の約数ではないので qiri の倍数でなければならない。ということは φ(N)qiri の倍数でなければならない。これが各 qi に対して成り立つことから φ(N)=N1 である。


さらに、特殊な形の数に対しては N1 の素因数分解を完全に知る必要はない場合がある。最も単純な判定法として、次のものがある。

定理 3

N=h2n+1 としたときに h<2n となっているとする。このとき N が素数であるための必要十分条件は

a(N1)/21(modN)

となる a が存在することである(a は各 q に対して異なっていてもよい)。

証明
N が素数で a を原始根とすると原始根の応用例 (1) から上記の式が成り立つから、必要性は成り立つ。

一方 N が合成数であるとするとN の素因数 p<N がとれる。 ここで a(N1)/21(modN) ならば p|N|(a(N1)/2+1) より a(N1)/21(modp) も成り立たなければなければならない。 すると aN11(modp) より a(modp) の位数は N1 の約数でなければならないが (N1)/2 の約数ではないので 2n の倍数でなければならないことがわかる。よって p1(mod2n) であるが このとき

N>p2(2n+1)2>22n+1>h2n+1=N

となり、矛盾が起きる。 よって a(N1)/21(modN) のとき N は素数でなければならない。


この判定法はProthが発見したもので、この形の素数に対する単純な判定法を与えている。そのため、現在知られている巨大な素数の多くは h2n+1 の形のものである。

N=7×2120+1,a=5 に対して

57×21191(mod7×2120+1)

となるので 7×2120+1 は素数である。

なお、この数 7×2120+1 の素数性は次のように示すこともできる。

221171(mod7×2120+1)

より 2(mod7×2120+1) の位数は 2118 に一致する。よって位数の法則より、 7×2120+1 の素因数は k2118+1 の形でなければならない。ここで 7×2120+1 が合成数と仮定すると

7×2120+1(2118+1)2>2236

となって矛盾するので 7×2120+1 は素数である。 (上記の事実から、この数はフェルマー数 F117=22117+1 の素因数なので F117 が素数ではないこともわかる)

テンプレート:Nav