数论四大定理
Ⅰ.威尔逊定理
Ⅱ.欧拉定理
Ⅲ.孙子剩余定理
Ⅳ.费马小定理
欧拉定理
内容
对于整数n,a且n,a互质则有
aφ(n)≡1(modn)
其中φ(n)为n的欧拉函数值
欧拉函数
百度百科
φ(n)为小于n的正整数种与n互质的数的数目。
证明
要证aφ(n)≡1(modn)只要证明aφ(n)−1≡0(modn)
接下来我们先将这φ(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得到的结果r_1,r_2……r_ {φ(n)}$与n互质
证明Ⅰ
正面证明不方便,于是考虑反正法:
假设从中任取两个数mx,ny,有mx≡my(modn)
则设mx>my,那么mx−my≡0(modn),
也就是a×(xx−xy)≡0(modn),
由于xx<n且xy<n,所以xx−xy<n,
显然xx−xy与n互质。所以a≡0(modn)显然矛盾。
证毕
证明Ⅱ
同样使用反正法
设其中某个数mt的余数rt与n有公因子q,
设a×xt=p×n+R
R=q×i
n=q×j
则a×xt=p×n+q×i
则a×xt=q×(p×j+i)
因为q是n的一个因子,所以从此式可以得到a×xt≡0(modn)显然矛盾
所以得证
总结
所以$m_1,m_2……m_{φ(n)} 中对n取模得到的值包含于x_1,x_2……x_{φ(n)} $中。
则m1×m2……×mφ(n)≡x1×x2×……×xφ(n)(modn)
于是令k=x1×x2×……×xφ(n).
则原式为aφ(n)×k≡k(modn)
得到k×(aφ(n)−1)≡0(modn)
由于k显然与n互质,所以$ (a_{φ(n)}-1)≡0(\mod n)$
证明完毕
性质
1.对于质数p,φ(p)=p−1。
2.若p为质数,n=pk
,则φ(n)=pk−pk−1 。
3.欧拉函数是积性函数,但不是完全积性函数。若m,n互质,则φ(m∗n)=φ(m)∗φ(n) 。特殊的,当m=2,n为奇数时,φ(2∗n)=φ(n)。
4.当n>2时,φ(n)是偶数。
5.小于n的数中,与n互质的数的总和为:φ(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
| LL oula(LL n) { LL ans=n; for(LL i=2;i*i<n;i++) { if(!n%i) { 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
| #include<cstdio> using namespace std; const int N = 1e6+10 ; int phi[N], prime[N]; int tot; 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(p−1)≡1(modp)
证明
显然由于p为素数,那么所有小于p的数,都与p互质,则φ(p)=p−1,那么由欧拉定理得证费马小定理。
费马小定理引理
在ACM中费马小定理本身使用的不如他的引力平凡,下面介绍一条费马小定理的引理:
内容
若正整数a,n互质,那么对于任意正整数b,有ab≡abmodφ(n)(modn)
证明
我们先将原式进行变形:
ab−bmodφ(n)×abmodφ(n)≡abmodφ(n)(modn)
于是得到
ab−bmodφ(n)≡1(modn)
于是我们只需要证明上式成立即可。
由于(b−bmodφ(n))∣φ(n)(因为b可以表示为b=q×φ(n)+bmodφ(n)),于是我们设(b−bmodφ(n))=q×φ(n),则有aq×φ(n)≡1(modn),即aqφ(n)≡1(modn)
由于a与n互质,那么aq与n互质,所以由费马小定理得,上式成立。
证明完毕。
应用
于是我们就可以使用这个引理将求幂运算取模时的幂减小。
参考链接
Ⅰ.欧拉函数的性质
Ⅱ.费马小定理推论(附例题)