费马小定理 & 欧拉定理及其证明
注:此文所提到的“整数”“素数”等均指正数
费马小定理
对于一个素数
p
p
p,任意整数
a
a
a,若
gcd
(
a
,
p
)
=
1
\gcd(a, p) = 1
gcd(a,p)=1(即
a
a
a,
p
p
p互质),则:
a
p
−
1
≡
1
(
m
o
d
p
)
a^{p-1} \equiv 1 \pmod{p}
ap−1≡1(modp)
证明
先找出所有小于等于
p
p
p 的与
p
p
p 互质的正整数,
为序列
A
=
{
1
,
2
,
3
,
…
,
p
−
1
}
A = \{1,2,3,\dots,p-1\}
A={1,2,3,…,p−1},则:
gcd
(
A
i
,
p
)
=
1
\gcd(A_i,p)=1
gcd(Ai,p)=1。
又因为
gcd
(
a
,
p
)
=
1
\gcd(a,p)=1
gcd(a,p)=1,所以:
gcd
(
a
∗
A
i
,
p
)
=
1
\gcd(a * A_i,p)=1
gcd(a∗Ai,p)=1。
对于上式的证明如下:
假设 A i ∗ a A_i * a Ai∗a 与 p p p 不互质,那么请思考 gcd ( A i ∗ a , p ) \gcd(A_i * a,p) gcd(Ai∗a,p) 等于什么,答案是 p p p。
因为由于 p p p 为质数,它的正因子只有 1 1 1 和 p p p,而 gcd ( A i ∗ a , p ) ≠ 1 \gcd(A_i * a,p) \neq 1 gcd(Ai∗a,p)=1,即它们的最大公因数不是 1 1 1,那就只能是 p p p 了。
则: p ∣ a A i p|aA_i p∣aAi(若 p p p 与 a ∗ A i a*A_i a∗Ai 的最大公因数是 p p p,那 a ∗ A i a*A_i a∗Ai 就能被 p p p 整除),
那么 p ∣ a p|a p∣a 和 p ∣ A i p|A_i p∣Ai 中至少成立一个。
假设 p ∣ a p|a p∣a 成立,那么 gcd ( a , p ) = p \gcd(a,p)=p gcd(a,p)=p,与大条件不符;
假设 p ∣ A i p|A_i p∣Ai 成立,那么 gcd ( A i , p ) = p \gcd(A_i,p)=p gcd(Ai,p)=p,也与大条件不符。
所以: gcd ( a ∗ A i , p ) = 1 \gcd(a * A_i,p)=1 gcd(a∗Ai,p)=1。
(注:这个证明会在之后用到。)
下来先看两个例子,方便理解下来的证明:
例一:当 p = 5 , a = 2 p=5,a=2 p=5,a=2时, A = { 1 , 2 , 3 , 4 } A=\{1,2,3,4\} A={1,2,3,4},
\space\space\space\space\space\space\space\space\space a ∗ A = { 2 , 4 , 6 , 8 } , a ∗ A % p = { 2 , 4 , 1 , 3 } a*A=\{2,4,6,8\},a*A \% p =\{2,4,1,3\} a∗A={2,4,6,8},a∗A%p={2,4,1,3};
例二:当 p = 7 , a = 4 p=7,a=4 p=7,a=4时, A = { 1 , 2 , 3 , 4 , 5 , 6 } A=\{1,2,3,4,5,6\} A={1,2,3,4,5,6},
\space\space\space\space\space\space\space\space\space a ∗ A = { 4 , 8 , 12 , 16 , 20 , 24 } , a ∗ A % p = { 4 , 1 , 5 , 2 , 6 , 3 } a* A=\{4,8,12,16,20,24\},a*A \% p =\{4,1,5,2,6,3\} a∗A={4,8,12,16,20,24},a∗A%p={4,1,5,2,6,3}。
我们发现 a ∗ A % p a*A \% p a∗A%p 貌似与 A A A 存在某种一一映射的关系,即在 A A A 中的每一个数都可在 a ∗ A % p a*A \% p a∗A%p 找到( a ∗ A % p a*A \% p a∗A%p 就是给序列 A A A 中的每一个数乘上 a a a 再取模 p p p,这里就相当于简写了)。
那么我们就假设(等会会证明):在
A
A
A 中的每一个数都可在
a
∗
A
%
p
a* A \%p
a∗A%p 找到,
即:
a
∗
A
%
p
a*A \% p
a∗A%p 中的数也是为
{
1
,
2
,
3
,
…
,
p
−
1
}
\{1,2,3,\dots,p-1\}
{1,2,3,…,p−1}
通过这个假设,我们可以得到:
A 1 A 2 … A p − 1 = ( a A 1 % p ) ( a A 2 % p ) … ( a A p − 1 % p ) A_1A_2\dots A_{p-1}=(aA_1\%p)(aA_2\%p)\dots (aA_{p-1}\%p) A1A2…Ap−1=(aA1%p)(aA2%p)…(aAp−1%p)
给两边再同时取余 p p p:
A 1 A 2 … A p − 1 % p = ( a A 1 % p ) ( a A 2 % p ) … ( a A p − 1 % p ) % p A_1A_2\dots A_{p-1}\%p=(aA_1\%p)(aA_2\%p)\dots (aA_{p-1}\%p)\%p A1A2…Ap−1%p=(aA1%p)(aA2%p)…(aAp−1%p)%p
后者又等于 ( a A 1 ) ( a A 2 ) … ( a A p − 1 ) % p (aA_1)(aA_2)\dots (aA_{p-1})\%p (aA1)(aA2)…(aAp−1)%p,就可得:
A 1 A 2 … A p − 1 % p = ( a A 1 ) ( a A 2 ) … ( a A p − 1 ) % p A_1A_2\dots A_{p-1}\%p=(aA_1)(aA_2)\dots (aA_{p-1})\%p A1A2…Ap−1%p=(aA1)(aA2)…(aAp−1)%p
即:
∏ i = 1 p − 1 A i ≡ ∏ i = 1 p − 1 ( A i ∗ a ) ( m o d p ) \prod_{i=1}^{p-1}A_i \equiv \prod_{i=1}^{p-1}(A_i*a) \pmod{p} i=1∏p−1Ai≡i=1∏p−1(Ai∗a)(modp)
那么:由于
A
=
{
1
,
2
,
…
,
p
−
1
}
A=\{1,2,\dots,p-1\}
A={1,2,…,p−1},
\space\space\space\space\space\space\space\space\space
∏
i
=
1
p
−
1
A
i
\prod_{i=1}^{p-1}A_i
∏i=1p−1Ai 就等于
(
p
−
1
)
!
(p-1)!
(p−1)!,
∏
i
=
1
p
−
1
(
A
i
∗
a
)
\prod_{i=1}^{p-1}(A_i*a)
∏i=1p−1(Ai∗a) 就等于
a
p
−
1
∗
(
p
−
1
)
!
a^{p-1}*(p-1)!
ap−1∗(p−1)!,
\space\space\space\space\space\space\space\space\space
(这里的 “
!
!
!” 表示阶乘,不是表感叹语气)
整个式子就可以表示为:
a p − 1 ∗ ( p − 1 ) ! ≡ ( p − 1 ) ! ( m o d p ) a^{p-1}*(p-1)! \equiv (p-1)! \pmod{p} ap−1∗(p−1)!≡(p−1)!(modp)
两边同时约掉 ( p − 1 ) ! (p-1)! (p−1)!得:
a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap−1≡1(modp)
那个假设的证明
现在来证明那个假设:
在 A A A 中的每一个数都可在 a ∗ A % p a*A \% p a∗A%p 找到,即 a ∗ A % p a*A \% p a∗A%p 中的数也为 { 1 , 2 , 3 , … , p − 1 } \{1,2,3,\dots,p-1\} {1,2,3,…,p−1}。
证明这个假设需要两点:
- a ∗ A % p a*A \% p a∗A%p 中,每个数的范围为 [ 1 , p − 1 ] [1,p-1] [1,p−1];
- a ∗ A % p a*A \% p a∗A%p 中不存在重复的数。
第一点:
打眼一看
a
∗
A
i
%
p
a*A_i \% p
a∗Ai%p 的范围应该为
[
0
,
p
−
1
]
[0,p-1]
[0,p−1],因为它取余
p
p
p 了嘛,
但有因为
gcd
(
a
∗
A
i
,
p
)
=
1
\gcd(a*A_i,p)=1
gcd(a∗Ai,p)=1,即
a
∗
A
i
a*A_i
a∗Ai 与
p
p
p 互质,
a
∗
A
i
a*A_i
a∗Ai 不能被
p
p
p 整除,
所以
a
∗
A
i
%
p
a*A_i \% p
a∗Ai%p 更准确的范围应该是
[
1
,
p
−
1
]
[1,p-1]
[1,p−1]。
第二点:
我们用反证法:
假设
a
∗
A
%
p
a*A \% p
a∗A%p 中存在两个相同的数,设为
a
∗
A
i
%
p
=
a
∗
A
j
%
p
a*A_i \% p = a*A_j \% p
a∗Ai%p=a∗Aj%p。
那么:
A
i
=
A
j
A_i=A_j
Ai=Aj,
又因为
A
A
A 中的数是已知两两不同的,所以这个假设不成立。
所以综上所述:"在 A A A 中的每一个数都可在 a ∗ A % p a*A \% p a∗A%p 找到,即 a ∗ A % p a*A \% p a∗A%p 中的数也为 { 1 , 2 , 3 , … , p − 1 } \{1,2,3,\dots,p-1\} {1,2,3,…,p−1}"的假设成立。
欧拉定理
对于任意两个整数 a a a 和 m m m,若 gcd ( a , m ) = 1 \gcd(a,m)=1 gcd(a,m)=1(即 a a a 和 m m m 互质),则:
a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)} \equiv 1 \pmod{m} aφ(m)≡1(modm)
注: φ ( m ) \varphi(m) φ(m) 是欧拉函数,表示小于等于 m m m 的与 m m m 互质的个数。
证明
欧拉定理看起来似乎和费马小定理很像,实际上费马小定理就是欧拉定理的一个特殊情况,即:
m
m
m 为素数,此时
φ
(
m
)
=
m
−
1
\varphi(m)=m-1
φ(m)=m−1。
因为任意一个素数都与【小于自身的任意一个整数】互质,且与【自身】不互质。
证明也与费马小定理的过程大同小异,再次笔者不过多赘述。
感兴趣的可自行证明。