Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

数论四大定理

Ⅰ.威尔逊定理

Ⅱ.欧拉定理

Ⅲ.孙子剩余定理

Ⅳ.费马小定理

欧拉定理

内容

对于整数n,a且n,a互质则有
aφn1modna^{φ(n)}≡ 1(\mod n)
其中φnφ(n)为n的欧拉函数值

欧拉函数

百度百科

φ(n)φ(n)为小于n的正整数种与n互质的数的数目。

证明

要证aφ(n)1modna^{φ(n)}≡ 1(\mod n)只要证明aφn)10modna^{φ(n)}-1≡ 0(\mod n)
接下来我们先将这φ(n)φ(n)个数按顺序排列,设排列后得到:
$x_1,x_2……x_{φ(n)} $

再者,我们令

$m_1=a_{x_1},m_2=a_{x_2}……m_{φ(n)} = a_{φ(n)} $

最后分两步证明:

Ⅰ.证明$m_1,m_2……m_{φ(n)} $中两两不同余n

Ⅱ.证明$m_1,m_2……m_{φ(n)} 中的所有数取模n得到的结果中的所有数取模n得到的结果r_1,r_2……r_ {φ(n)}$与n互质

证明Ⅰ

正面证明不方便,于是考虑反正法:

假设从中任取两个数mx,nym_x,n_y,有mxmymodnm_x≡ m_y(\mod n)

则设mx>mym_x > m_y,那么mxmy0(modn)m_x-m_y≡0(\mod n),

也就是a×(xxxy)0(modn)a\times (x_x-x_y)≡0(\mod n),

由于xx<nxy<nx_x < n 且 x_y < n,所以xxxy<nx_x-x_y < n

显然xxxyx_x-x_y与n互质。所以a0(modn)a≡0(\mod n)显然矛盾。

证毕

证明Ⅱ

同样使用反正法

设其中某个数mtm_t的余数rtr_t与n有公因子q,

a×xt=p×n+Ra\times x_t=p\times n+R

R=q×iR=q\times i

n=q×jn=q\times j

a×xt=p×n+q×ia\times x_t=p\times n+q\times i

a×xt=q×(p×j+i)a\times x_t=q\times (p\times j+i)

因为q是n的一个因子,所以从此式可以得到a×xt0(modn)a\times x_t≡0 (\mod n)显然矛盾

所以得证

总结

所以$m_1,m_2……m_{φ(n)} 中对n取模得到的值包含于中对n取模得到的值包含于x_1,x_2……x_{φ(n)} $中。

m1×m2×mφ(n)x1×x2××xφ(n)(modn)m_1\times m_2……\times m_{φ(n)}≡x_1\times x_2\times ……\times x_{φ(n)} (\mod n)

于是令k=x1×x2××xφ(n)k=x_1\times x_2\times ……\times x_{φ(n)}.

则原式为aφ(n)×kk(modn)a_{φ(n)}\times k≡k(\mod n)

得到k×(aφ(n)1)0(modn)k\times (a_{φ(n)}-1)≡0(\mod n)

由于k显然与n互质,所以$ (a_{φ(n)}-1)≡0(\mod n)$

证明完毕

性质

1.对于质数p,φ(p)=p1φ(p)=p−1

2.若p为质数,n=pkn=p^k
,则φ(n)=pkpk1φ(n)=p^k-p^{k-1}

3.欧拉函数是积性函数,但不是完全积性函数。若m,n互质,则φ(mn)=φ(m)φ(n)φ(m∗n)=φ(m)∗φ(n) 。特殊的,当m=2m=2,n为奇数时,φ(2n)=φ(n)φ(2*n)=φ(n)

4.当n>2n > 2时,φ(n)φ(n)是偶数。

5.小于n的数中,与n互质的数的总和为:φ(n)n/2(n<1)φ(n) * n / 2 (n < 1)。

6.$n=∑_{d∣n}φ(d) $,即n的因数(包括1和它自己)的欧拉函数之和等于n。

证明略,详见欧拉函数性质原地址

代码

求单个数n的欧拉函数值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//实践复杂度为O(sqrt(n))
LL oula(LL n)
{
LL ans=n;
for(LL i=2;i*i<n;i++)
{
if(!n%i)//找n的因子
{
ans=ans/i*(1-i);
while(!n%i)//利用唯一分解定理
{
n/=i;
}
}
}
if(n>1)ans=ans/n*(n-1);
return ans;
}

求n个数的欧拉函数值打表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//时间复杂度为O(n)
#include<cstdio>
using namespace std;
const int N = 1e6+10 ;
int phi[N], prime[N];
int tot;//tot计数,表示prime[N]中有多少质数
void Euler(){
phi[1] = 1;
for(int i = 2; i < N; i ++){
if(!phi[i]){
phi[i] = i-1;
prime[tot ++] = i;
}
for(int j = 0; j < tot && 1ll*i*prime[j] < N; j ++){
if(i % prime[j]) phi[i * prime[j]] = phi[i] * (prime[j]-1);
else{
phi[i * prime[j] ] = phi[i] * prime[j];
break;
}
}
}
}

int main(){
Euler();
}

费马小定理

内容

对于一个素数p,另一个不是p的倍数的整数a,有a(p1)1(modp)a^{(p-1)}≡1(\mod p)

证明

显然由于p为素数,那么所有小于p的数,都与p互质,则φ(p)=p1φ(p)=p-1,那么由欧拉定理得证费马小定理。

费马小定理引理

在ACM中费马小定理本身使用的不如他的引力平凡,下面介绍一条费马小定理的引理:

内容

若正整数a,na,n互质,那么对于任意正整数bb,有ababmodφ(n)(modn)a^b≡a^{b mod φ(n)}(\mod n)

证明

我们先将原式进行变形:

abbmodφ(n)×abmodφ(n)abmodφ(n)(modn)a^{b-b\mod φ(n)}\times a^{b mod φ(n)}≡a^{b mod φ(n)}(\mod n)

于是得到

abbmodφ(n)1(modn)a^{b-b\mod φ(n)}≡1(\mod n)

于是我们只需要证明上式成立即可。

由于(bbmodφ(n))φ(n)(b-b\mod φ(n))|φ(n)(因为b可以表示为b=q×φ(n)+bmodφ(n)b=q\times φ(n)+b\mod φ(n)),于是我们设(bbmodφ(n))=q×φ(n)(b-b\mod φ(n))=q\times φ(n),则有aq×φ(n)1(modn)a^{q\times φ(n)}≡1(\mod n),即aqφ(n)1(modn)a^{q^{φ(n)}}≡1(\mod n)

由于a与n互质,那么aqa^{q}与n互质,所以由费马小定理得,上式成立。

证明完毕。

应用

于是我们就可以使用这个引理将求幂运算取模时的幂减小。

参考链接

Ⅰ.欧拉函数的性质

Ⅱ.费马小定理推论(附例题)

评论