フェルマーの小定理

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

テンプレート:混同 数論において、フェルマーの小定理(フェルマーのしょうていり、テンプレート:Lang-en-short)は、素数の性質についての定理であり、実用としてもRSA暗号に応用されている定理である。

概要

p を素数とし、 a を整数とすると、

apa(modp)

が成立すると言う定理である。また、 p を素数とし、 ap の倍数でない整数( ap互いに素)とするときに、

ap11(modp)

が成立する。すなわち、 ap1 乗を p で割った余りは 1 である。有名なフェルマーの最終定理と区別するためにあえて「小」定理と称されている。

この定理はピエール・ド・フェルマーの名を冠するが、フェルマーの他の予想と同じく、フェルマー自身によって証明が与えられていたことが確認されているわけではない。この定理に対する証明はゴットフリート・ライプニッツによって初めて与えられた。

証明

3通りの証明を示す。

証明(1)

二項定理から、数学的帰納法を用いて証明する方法が簡便である。

補題:「 (m+1)pp で割った余りは mp+1p で割った余りに等しい。」

(補題の証明)

(m+1)p=mp+pC1mp1+pC2mp2++pCp1m+1二項定理

右辺の両端以外の二項係数 pCk はすべて p の倍数である。なぜなら、

pCk=p(p1)(pk+1)k(k1)1

であり、 p は素数であって k<p なので、分子に含まれる p が約分されることはないからである。

したがって、 (m+1)pp で割った余りは、両端の項 mp+1p で割った余りに等しい。(補題の証明終)

命題「 apa(modp) 」を、 a についての数学的帰納法で証明する。

補題に m=1 を代入すると、 2p=(1+1)pp で割った余りは 1p+1=2 となり、 a=2 のとき成り立つ。

命題が、 a=k のとき成り立つと仮定する。

補題から、 (k+1)pp で割った余りは kp+1p で割った余りに等しい。帰納法の仮定によって kpp で割った余りは kp で割った余りに等しいから、 (k+1)pp で割った余りは k+1p で割った余りに等しい。

したがって、命題は a=k+1 のときも成り立つ。

数学的帰納法によって、命題は a2 に対して成り立つ。また、 a=0, 1 のときは、代入してみると明らかに成り立つので、命題は a0 に対して成り立つ。

(証明終)

証明(2)

上の補題と同様に、(x+y)pxp+yp(modp) が示せる。これより、

ap=[1+(a1)]p1p+[1+(a2)]p1+1p+[1+(a3)]pa(modp)

(証明終)

証明(3)

p を素数とし、 ap が互いに素とするときに、

ap11(modp)

が成立することを、ここで証明する。

集合 {1, 2, 3,, p1} は、全体として法 p の下で {a, 2a, 3a,, (p1)a} と合同である。(背理法による証明)もし後者の集合内に

iaja(modp)

となる i, j (ただし、 ij )が存在したとする。すると、 ap互いに素なので、 ij(modp) となり、 0<i, j<p であることから、 i=j となり、矛盾する。したがって、二つの集合は全体として合同であることが分かった。

それぞれの集合の要素をすべて掛け合わせると、

(p1)!(p1)! ap1(modp)

となる。 p が素数であることから、 p(p1)! とは互いに素なので、

ap11(modp)

(証明終)

性質

フェルマーの小定理は、乱数を発生する用途に使われることがある。しかし、このような場合、あらゆる(p と互いに素な)a について、

b=an(modp)

が、n=1..p1 に沿って

1b<p

の全要素を順繰りに巡ることを保証しているわけではない点には注意すべきである。実際、次の各表では、n=p1 である右端の列が全てゼロになることは確かだが、それ以外にもゼロは出現している。

p=3 の場合:

n
1 2
a 1 1 1
2 2 1

p=5 の場合:

n
1 2 3 4
a 1 1 1 1 1
2 2 4 3 1
3 3 4 2 1
4 4 1 4 1

p=7 の場合:

n
1 2 3 4 5 6
a 1 1 1 1 1 1 1
2 2 4 1 2 4 1
3 3 2 6 4 5 1
4 4 2 1 4 2 1
5 5 4 6 2 3 1
6 6 1 6 1 6 1

p=11 の場合:

n
1 2 3 4 5 6 7 8 9 10
a 1 1 1 1 1 1 1 1 1 1 1
2 2 4 8 5 10 9 7 3 6 1
3 3 9 5 4 1 3 9 5 4 1
4 4 5 9 3 1 4 5 9 3 1
5 5 3 4 9 1 5 3 4 9 1
6 6 3 7 9 10 5 8 4 2 1
7 7 5 2 3 10 4 6 9 8 1
8 8 9 6 4 10 3 2 5 7 1
9 9 4 3 5 1 9 4 3 5 1
10 10 1 10 1 10 1 10 1 10 1

p=13 の場合:

n
1 2 3 4 5 6 7 8 9 10 11 12
a 1 1 1 1 1 1 1 1 1 1 1 1 1
2 2 4 8 3 6 12 11 9 5 10 7 1
3 3 9 1 3 9 1 3 9 1 3 9 1
4 4 3 12 9 10 1 4 3 12 9 10 1
5 5 12 8 1 5 12 8 1 5 12 8 1
6 6 10 8 9 2 12 7 3 5 4 11 1
7 7 10 5 9 11 12 6 3 8 4 2 1
8 8 12 5 1 8 12 5 1 8 12 5 1
9 9 3 1 9 3 1 9 3 1 9 3 1
10 10 9 12 3 4 1 10 9 12 3 4 1
11 11 4 5 3 7 12 2 9 8 10 6 1
12 12 1 12 1 12 1 12 1 12 1 12 1

オイラーの定理

テンプレート:Main 後になってレオンハルト・オイラーはこの定理を拡張し、 an互いに素な整数とすると、

aφ(n)1(modn)

が成り立つことを示した。ここで、φ(n)n 以下の n と互いに素な自然数の個数を表し、オイラー関数と呼ばれる。

特に n が素数のときは、φ(n)=n1 より、フェルマーの小定理に一致する。

カーマイケルの定理

m=φ(n) とすれば、 am1(modn)n と互いに素なすべての a に対して成り立つが、 φ(n) はこの性質を満たす m の最小の数とは限らない。カーマイケルの定理はオイラーの定理を精緻化したもので、すべての a に対してam1(modn)が成立するような最小の m を与える。ただし、n と互いに素なaが与えられたときに、 am1(modn) を満たす最小のmは、λ(n) となるとは限らない。

たとえば、n=10000 のとき、カーマイケルの定理によれば n と互いに素なすべての aに対して am1(modn) を満たす最小の m は500であるが、特定の a=7 に対しては 71001(modn) が成立する。

テンプレート:仮リンク λ(n) を以下のように再帰的に定義する。

n=2e なら、

λ(2e)={1(e=1)2(e=2)2e2(e3)

n が奇素数 p を用いて n=pe と書けるなら、

λ(pe)=pe1(p1)

np1e1pkek素因数分解できるなら、

λ(p1e1pkek)=lcm{λ(p1e1),,λ(pkek)}

ここで lcm最小公倍数

カーマイケルの定理は、 an が互いに素なとき、

aλ(n)1(modn)

が成り立つという定理である。

λ(n)n1 の約数であるとき、 nカーマイケル数と呼ばれ、自身と互いに素であるようなすべての底でフェルマーテストを通過する絶対擬素数となる。

フェルマーテスト

フェルマーテストは、フェルマーの小定理の対偶を用いて確率的素数判定を行うアルゴリズムである。

フェルマーの小定理の対偶をとると、これは次のように、自然数 n合成数であるための十分条件を与える。

対偶
n と互いに素な整数 a
an1≢1(modn)
を満たせば、 n は合成数である。

この十分条件を用いて、次のように自然数 n の素数判定を行う。

  1. パラメータとして、 2 以上 n 未満の自然数 a を1つ定める。
  2. an が互いに素でなければ「 n は合成数」と出力して終了。
  3. an1≢1(modn) ならば「 n は合成数」と出力して終了する。そうでないとき「 n は確率的素数」と出力して終了する。

フェルマーテストが「合成数」と出力したとき、上のフェルマーの小定理の対偶によって n は実際に合成数である。しかし、上の対偶は十分条件を与えるのみで必要条件を与えるものではないので、「確率的素数」と出力された場合でも n は実際に素数であるとは限らない。素数ではないにもかかわらず「確率的素数」と判定されてしまう合成数は擬素数と呼ばれる。

疑わしければ、「確率的素数」と出力された場合にはまた異なる a を用いて再びテストを行う。十分な回数だけ a を取り替えて繰り返せば、フェルマーテストが「確率的素数」と判定した数は実際に素数である可能性が高い。

しかし、カーマイケル数または絶対擬素数と呼ばれる "反例" もある。カーマイケル数は合成数であるにもかかわらず、ほとんどいかなる a を用いても「確率的素数」と判定されてしまう。従って、フェルマーテストは完全な素数判定法ではない。

フェルマーテストを改善するアルゴリズムとしては、ミラー–ラビン素数判定法AKS素数判定法がある。

一般化

フェルマーの小定理・オイラーの定理は一般の有限群の定理に拡張できる。 G位数 m の有限群とすると、 G の任意の元 g に対して gm は単位元に一致する。オイラーの定理は G乗法群 (/n)× のときの場合であり、フェルマーの小定理はさらに n が素数の場合である。

参考文献

外部リンク