フェルマーの小定理
数論において、フェルマーの小定理(フェルマーのしょうていり、Fermat's little theorem)は、素数の性質についての定理であり、実用としてもRSA暗号に応用されている定理である。
p を素数とし、 a を整数とすると、
a^{p} \equiv a \pmod p
が成立すると言う定理である。また、 p を素数とし、 a を p の倍数でない整数( a と p は互いに素)とするときに、
a^{p-1} \equiv 1 \pmod p
が成立する。すなわち、 a の p-1 乗を p で割った余りは 1 である。有名なフェルマーの最終定理と区別するためにあえて「小」定理と称されている。
この定理はピエール・ド・フェルマーの名を冠するが、フェルマーの他の予想と同じく、フェルマー自身によって証明が与えられていたことが確認されているわけではない。この定理に対する証明はゴットフリート・ライプニッツによって初めて与えられた。
3通りの証明を示す。
二項定理から、数学的帰納法を用いて証明する方法が簡便である。
補題:「 \left( m+1\right)^{p} を p で割った余りは m^{p}+1 を p で割った余りに等しい。」
(補題の証明)
(m + 1)^p = m^p + {}_p\mathrm{C}_1 m^{p-1} + {}_p\mathrm{C}_2 m^{p-2} + \dotsb + {}_p\mathrm{C}_{p-1} m + 1(二項定理)
右辺の両端以外の二項係数 {}_p\mathrm{C}_k はすべて p の倍数である。なぜなら、
{}_p \mathrm{C}_k = \frac{p(p-1) \dotsb (p-k+1)}{k (k-1) \dotsb 1}
であり、 p は素数であって k<p なので、分子に含まれる p が約分されることはないからである。
したがって、 \left( m+1\right)^{p} を p で割った余りは、両端の項 m^{p}+1 を p で割った余りに等しい。(補題の証明終)
命題「 a^{p}\equiv a\pmod{p} 」を、 a についての数学的帰納法で証明する。
補題に m=1 を代入すると、 2^{p}=\left( 1+1\right)^{p} を p で割った余りは 1^{p}+1=2 となり、 a=2 のとき成り立つ。
命題が、 a=k のとき成り立つと仮定する。
補題から、 \left( k+1\right)^{p} を p で割った余りは k^{p}+1 を p で割った余りに等しい。帰納法の仮定によって k^{p} を p で割った余りは k を p で割った余りに等しいから、 \left( k+1\right)^{p} を p で割った余りは k+1 を p で割った余りに等しい。
したがって、命題は a=k+1 のときも成り立つ。
数学的帰納法によって、命題は a\geqq 2 に対して成り立つ。また、 a=0,\ 1 のときは、代入してみると明らかに成り立つので、命題は a\geqq 0 に対して成り立つ。
(証明終)
上の補題と同様に、(x+y)^p \equiv x^p + y^p \pmod p が示せる。これより、
\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}
(証明終)
p を素数とし、 a と p が互いに素とするときに、
a^{p-1} \equiv 1 \pmod p
が成立することを、ここで証明する。
集合 \left\{ 1,\ 2,\ 3,\ldots ,\ p-1\right\} は、全体として法 p の下で \left\{ a,\ 2a,\ 3a,\ldots ,\ \left( p-1\right)a\right\} と合同である。(背理法による証明)もし後者の集合内に
ia \equiv ja \pmod p
となる i,\ j (ただし、 i\neq j )が存在したとする。すると、 a と p が互いに素なので、 i\equiv j\pmod{p} となり、 0<i,\ j<p であることから、 i=j となり、矛盾する。したがって、二つの集合は全体として合同であることが分かった。
それぞれの集合の要素をすべて掛け合わせると、
(p-1)! \equiv (p-1)! \  a^{p-1} \pmod p
となる。 p が素数であることから、 p と \left( p-1\right)! とは互いに素なので、
a^{p-1}\equiv 1\pmod{p}
(証明終)
後になってレオンハルト・オイラーはこの定理を拡張し、 a を n と互いに素な整数とすると、
a^{\varphi(n)}\equiv 1\pmod{n}
が成り立つことを示した。ここで、\varphi(n) は n 未満の n と互いに素な自然数の個数を表し、オイラー関数と呼ばれる。
特に n が素数のときは、\varphi(n)=n-1 より、フェルマーの小定理に一致する。
m=\varphi(n) とすれば、 a^{m}\equiv 1\pmod{n} が n と互いに素なすべての a に対して成り立つが、 \varphi(n) はこの性質を満たす m の最小の数とは限らない。カーマイケルの定理はオイラーの定理を精緻化したもので、最小の m を与える。
カーマイケル関数 \lambda \left( n\right) を以下のように再帰的に定義する。
n=2^{e} なら、
\lambda (2^e )=\begin{cases}
1 &(e=1)\\
2 &(e=2)\\
2^{e-2} &(e \ge 3)
\end{cases}
n が奇素数 p を用いて n=p^{e} と書けるなら、
\lambda(p^e) = p^{e-1}(p-1)
n が p_{1}^{e_{1}\ldots p_{k}^{e_{k} と素因数分解できるなら、
\lambda(p_1^{e_1} \dotsb p_k^{e_k}) = \operatorname{lcm} \{ \lambda(p_1^{e_1}), \dotsc, \lambda(p_k^{e_k}) \}
ここで \operatorname{lcm} は最小公倍数。
カーマイケルの定理は、 a と n が互いに素なとき、
a^{\lambda \left( n\right)}\equiv 1\pmod{n}
が成り立つという定理である。
\lambda \left( n\right) が n-1 の約数であるとき、 n はカーマイケル数と呼ばれ、自身と互いに素であるようなすべての底でフェルマーテストを通過する絶対擬素数となる。
フェルマーテストは、フェルマーの小定理の対偶を用いて確率的素数判定を行うアルゴリズムである。
フェルマーの小定理の対偶をとると、これは次のように、自然数 n が合成数であるための十分条件を与える。
n と互いに素な整数 a が
a^{n-1} \not\equiv 1\pmod{n}
を満たせば、 n は合成数である。
この十分条件を用いて、次のように自然数 n の素数判定を行う。
パラメータとして、 2 以上 n 未満の自然数 a を1つ定める。
a と n が互いに素でなければ「 n は合成数」と出力して終了。
a^{n-1} \not\equiv 1\pmod{n} ならば「 n は合成数」と出力して終了する。そうでないとき「 n は確率的素数」と出力して終了する。
フェルマーテストが「合成数」と出力したとき、上のフェルマーの小定理の対偶によって n は実際に合成数である。しかし、上の対偶は十分条件を与えるのみで必要条件を与えるものではないので、「確率的素数」と出力された場合でも n は実際に素数であるとは限らない。素数ではないにもかかわらず「確率的素数」と判定されてしまう合成数は擬素数と呼ばれる。
疑わしければ、「確率的素数」と出力された場合にはまた異なる a を用いて再びテストを行う。十分な回数だけ a を取り替えて繰り返せば、フェルマーテストが「確率的素数」と判定した数は実際に素数である可能性が高い。
しかし、カーマイケル数または絶対擬素数と呼ばれる "反例" もある。カーマイケル数は合成数であるにもかかわらず、ほとんどいかなる a を用いても「確率的素数」と判定されてしまう。従って、フェルマーテストは完全な素数判定法ではない。
フェルマーテストを改善するアルゴリズムとしては、ミラー–ラビン素数判定法やAKS素数判定法がある。
フェルマーの小定理・オイラーの定理は一般の有限群の定理に拡張できる。 G を位数 m の有限群とすると、 G の任意の元 g に対して g^{m} は単位元に一致する。オイラーの定理は G が乗法群 \left( \mathbb{Z}/n\mathbb{Z}\right)^{\times} のときの場合であり、フェルマーの小定理はさらに n が素数の場合である。