欧拉定理和扩展欧拉定理可以解决形如5100000000000000000000等大数幂取模或者求ax mod n=1的大于1的最小x值等一类问题,其中欧拉函数占巨大的重要性,有效的将复杂的大数幂取模问题转化为简单的大数取模和快速幂问题,下面就来介绍一下基本的欧拉定理和扩展欧拉定理
1.欧拉函数的定义
欧拉函数Φ(n)指1至n以内,与n互质的数的个数
当n比较小时,可以通过从前到后遍历的方法计算Φ(n)
对于欧拉函数Φ(n),还有更简单的计算方法。
假如n可以通过分解质因子得到n的质因子p1,p2,p3.....pn;
那么
Φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*.....*(1-1/pn)
特别的,当n=pr(p为质数)时(p是n的唯一质因子)
Φ(n)=pr-count(p,2p,3p....pr)=n*(1-1/p) (证明:由于n分解质因子只有p这一个质因子,故n以内与n不互质的数为p的倍数)
当n=p1r1p2r2时(p1和p2是n的所有质因子)
含有p1的因子为p1,2p1.....p2r2p1r1-1,p2r2p1r1,一共n/p1个;
含有p2的因子为p2,2p2.....p1r1p2r2-1,p1r1p2r2,一共n/p2个;
既含有p1又含有p2的因子为p1p2,2p1p2,3p1p2.....p1r1-1p2r2-1,一共n/p1p2个;
根据容斥定理可知与n不互质数的个数k为n/p1+n/p2-/p1p2;
那么Φ(n)=n-k=n*(1-1/p1)*(1-1/p2);
因此可以推广到n=p1r1p2r2....pnrn
2.欧拉函数的性质
1)当n为质数时 Φ(n)=n-1
2)当m与n互质时 Φ(mn)=Φ(n)*Φ(m)
3)当n为质数时 Φ(2n)=Φ(n)
例如
Φ(6)=Φ(3)=2 或Φ(6)=Φ(3)*Φ(2)=2*1=2
3.欧拉定理
若n与a互质,则aΦ(n)≡1(mod n)
首先来解释一下 aΦ(n)≡1(mod n) 是什么意思:
aΦ(n)≡1(mod n) 等价于 aΦ(n) mod n=1 mod n
应用:可以解决ax=1(mod n)或ax mod n=1 mod n的大于1的最小x的值的问题
由于最小x一定小于等于Φ(n),则令Φ(n)=t*x+b,aΦ(n)=atx+b=atxab,但由于我们算的x是最小的x,故b等于0,可以得到Φ(n)是x的倍数,因此只要遍历Φ(n)的所有因数,大于1的最小的因数就是x的值
比如让你求4x mod 3=1的最小x值:
4与3本身互质,最小x一定小于等于Φ(3)=2,由于2的大于1的最小因数为2,故x最小取2
特别的,当n是质数时,ax=1(mod n)的大于1的最小x值为n-1
4.扩展欧拉定理
一个公式:ax mod n≡ax mod Φ(n)+Φ(n) mod n (n与x与a无需满足任何条件)
应用:运用扩展欧拉定理可以解决大数幂求模的问题,将利用大数求余很大的x转化为约等于Φ(n)的一个数,然后可以利用快速幂的方法得到结果!
如让你求49876543210213657854521 mod 12345的值:
可以通过分解质因子方法得到Φ(12345)=6576,再利用大数求余求9876543210213657854521 mod 6576=569,再用快速幂求4569+6576 mod 12345=9318
原文地址:https://www.cnblogs.com/qiyueliu/p/10793232.html