フェルマーの小定理

提供: miniwiki
2018/7/2/ (月) 03:57時点におけるja>299b69aによる版 (数式体裁)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

数論において、フェルマーの小定理(フェルマーのしょうていり、: Fermat's little theorem)は素数の性質についての定理であり、実用としてもRSA暗号に応用されている定理である。

概要

p を素数とし、ap の倍数でない整数ap互いに素)とするときに、

[math]a^{p-1} \equiv 1 \pmod p[/math]

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

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

証明

証明(1)

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

[math]a^{p} \equiv a \pmod p[/math]

同値である(ap は互いに素より、両辺を a で割れるから)。この形の命題として証明する。

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

(補題の証明)

[math](m + 1)^p = m^p + {}_p\mathrm{C}_1 m + {}_p\mathrm{C}_2 m^{p-1} + \dotsb + {}_p\mathrm{C}_{p-1} m + 1[/math]二項定理

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

[math]{}_p \mathrm{C}_k = \frac{p(p-1) \dotsb (p-k+1)}{k (k-1) \dotsb 1}[/math]

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

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

apa (mod p)」を a に関する数学的帰納法で証明する。

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

a = k のとき成り立つと仮定する。

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

ゆえに a = k + 1 のときも成り立つ。

ゆえに帰納法により a ≧ 2 に対して成り立つが、a = 0, 1 のときも、代入してみると明らかに成り立つ。

証明終

証明(2)

上の補題と同様に、[math](x+y)^p \equiv x^p + y^p \pmod p[/math]が示せる。これより、

[math]\begin{align} a^p &= [1+(a-1)]^p \\ &\equiv 1^p + [1+(a-2)]^p \\ &\equiv 1 + 1^p + [1+(a-3)]^p \\ &\equiv a \pmod p \end{align}[/math]

ここで ap は互いに素なので、両辺を a で割ることができ、

[math]a^{p-1} \equiv 1 \pmod p[/math]

となる。(証明終

証明(3)

{1, 2, 3,..., p−1} は全体として {a, 2a, 3a,..., (p−1)a} と合同である。仮に後者の集合で、

[math]ia \equiv ja \pmod p[/math]

なるi, j (ij) が存在したとする。すると、ap互いに素なので ij (mod p) となり、0 < i, j < p であることから、i = j となり、矛盾する。

よって全体として合同であることが分かったので、それぞれの集合の要素を全てかけあわせて、

(p−1)! ≡ (p−1)! ap−1 (mod p) となる。pが素数であることから、p と (p-1)! は互いに素なので、

[math]a^{p-1} \equiv 1 \pmod p[/math]

証明終

オイラーの定理

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

[math]a^{\varphi(n)} \equiv 1 \pmod n[/math]

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

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

カーマイケルの定理

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

カーマイケル関数English版 λ(n) を以下のように再帰的に定義する。

n = 2e なら、

[math]\lambda (2^e )=\begin{cases} 1 &(e=1)\\ 2 &(e=2)\\ 2^{e-2} &(e \ge 3) \end{cases}[/math]

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

[math]\lambda(p^e) = p^{e-1}(p-1)[/math]

np1e1 ... pkek素因数分解できるなら、

[math]\lambda(p_1^{e_1} \dotsb p_k^{e_k}) = \operatorname{lcm} \{ \lambda(p_1^{e_1}), \dotsc, \lambda(p_k^{e_k}) \}[/math]

ここで lcm は最小公倍数

カーマイケルの定理は、an が互いに素なとき、 aλ(n) ≡ 1 (mod n) が成り立つという定理である。

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

フェルマーテスト

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

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

対偶
n と互いに素な整数 a
[math]a^{n-1} \not\equiv 1\pmod{n}[/math]
を満たせば、n は合成数である。

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

  1. パラメータとして、2 以上 n 未満の自然数 a を1つ定める。
  2. an が互いに素でなければ「n は合成数」と出力して終了。
  3. [math]a^{n-1} \not\equiv 1\pmod{n}[/math] ならば「n は合成数」と出力して終了する。そうでないとき「n は確率的素数」と出力して終了する。

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

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

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

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

一般化

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

参考文献

外部リンク