数论基础 (费马小定理/扩展欧几里得/欧拉函数)
来源:互联网 发布:钱盾是什么软件 编辑:程序博客网 时间:2024/05/17 03:57
逆元:
a*x == 1(mod m)
x是相对于m的a的逆元
a是相对于m的x的逆元
拓展欧几里得:
(证明过程参考自百度百科)
原式:
当b=0时有
gcd(a,b)=a ,此时x=1,y=0 当b不为0时,根据欧几里得定理
gcd(a,b)=gcd(b,amodb) 可得ax+by=gcd(a,b)=gcd(b,amodb)=bx′+(amodb)y′ ,即ax+by=bx′+(amodb)y′=bx′+(a−b∗⌊a/b⌋)y′
移项得ax+by=bx′+(amodb)y′=ay′+b(x′−⌊a/b⌋y′)
根据恒等定理,有{x=y′y=x′−⌊a/b⌋y′
这有什么用呢?x′ 和y′ 还是不知道呀.
重新来看看我们得到的两个等式.x和y是gcd(a,b)=ax+by 的解,而x’和y’是在对gcd(a,b) 按欧几里德算法进行一步后的结果对应的贝祖等式gcd(b,amodb)=bx′+(amodb)y′ 的解.也就是说,gcd(a,b) 对应的贝祖等式的解x,y可以由gcd(b,amodb) 对应等式的解x’,y’计算得出
由于欧几里德算法最后一步为gcd(d,0)=d ,此时对应的等式的解为x=1,y=0,因此只要如上述代码,从gcd(d,0) 往前处理,在进行欧几里德算法的递归的时候根据相邻两次调用间x,y和x’,y’的关系计算即可求出ax+by=gcd(a,b) 的解.
更进一步,对于任意不定式
如何得到所有解?
实际上在之前的计算和证明中我们得到的只是不定方程的一组解,那么怎样得到所有解呢?对于一般形式ax+by=c 有通解x=p+kb,y=q−ka(k为任意整数) .(证明略,只要代入一下就知道为什么通解是这个了)
int extend_GCD(int a,int b,int &x,int &y){ int tmp,d; if(b==0){ x=1; y=0; return a; } int res=extend_GCD(b,a%b,x,y); tmp = x; x = y; y = tmp - (a/b)*y; return res;}
void Extend_Gcd(int a,int b,int &n,int &x,int &y){ if(!b){ n=a,x=1,y=0; printf("1:%d %d\n",x,y); }else{ Extend_Gcd(b,a%b,n,y,x); y-=x*(a/b); printf("---%d %d\n",x,y); }}
费马小定理:
p与m互质:
gcd(p, m) == 1
p*(p^(m-1)) == 1(mod m);
快速幂求解即可
欧拉函数:
积性函数:对于任意互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。
完全积性函数:对于任意整数a和b有性质f(ab)=f(a)f(b)的数论函数。
欧拉函数定义 :
φ(n) : 比n小的与n互质的数的个数 (φ(1) = 1)
欧拉函数性质:
性质一
对于一个质数n,φ(n)=n−1。
证明:
因为n是质数。
性质二
若n=pk,则φ(n)=pk−pk−1=(p−1)pk−1。
证明:
因为除了p的倍数外,其他数都跟n互质。
性质三
当gcd(n,m)=1时,φ(nm)=φ(n)∗φ(m)
证明:
φ(n)是积性函数。
性质四
设n=pk11∗pk22...∗pkmm,则φ(n)=n∗(1−1p1)∗(1−1p2)∗...(1−1pm)
证明:
根据性质二
φ(n)=∏(pi−1)pki−1i(pi|n)=n∏(1−1p1)(直接把n提出来)
当然也可以用容斥的想法去理解。
性质五
欧拉定理:对于互质的整数a,m有aφ(m)≡1(modm)。
证明:
这小于n且与n互质的集合时Z,显然|Z|=φ(n),Z={p1,p2...pφ(n)}。
令集合S={a∗p1modn,a∗p2modn...a∗pφ(n)modn}。
因为:
1. 因为a与n互质,pi与n互质,所以a∗pi与n互质,所以a∗p1modn∈Z
2. 若i≠j,那么a∗pimodn≠a∗pjmodn
反证:
假如a∗pimodn=a∗pjmodn ,设a∗pi=ki∗n+b
那么
a∗pi=ki∗n+b=a∗pj=kj∗n+ba∗(pi−pj)=n∗(ki−kj)
因为a与n互质,即n|(pi−pj),不成立。
所以S=Z。
由此我们可以列出等式:
a∗p1∗a∗p2...∗a∗pφ(n)aφ(n)≡p1∗p2...pφ(n)(modn)≡1(modn)
延伸:
费马定理:如果正整数a与p互质,则ap−1≡1(modp)。
证明:由性质一可得φ(p)=p−1,代入欧拉定理即可
性质六
设小于n的所有与n互质的数的和为Sum,Sum=n∗φ(n)2
证明:
首先证明一个结论:如果gcd(n,i)=1则gcd(n,n−i)=1。
反证法:如果存在k≠1使gcd(n,n−i)=k,那么
(n−i)modk=0,nmodk=0
可得imodk=0,即gcd(n,i)=k,也就是说如果gcd(n,i)=1,那么gcd(n,n−i)就不能大于1。
那么就可以得知与n互质的数都是成对存在的,并且和为n,那么就可以得出Sum=n∗φ(n)2的公式。
性质七
首先p是个质数。如果imodp=0,那么φ(i∗p)=p∗φ(i)(结论一),否则φ(i∗p)=φ(i)∗(p−1)(结论二)。
证明:
对于第一个结论我们只需证明gcd(n,m)=1可以得出gcd(n,m+n)=1即可。
反证法:假设gcd(n,m+n)=b(b≠1)。设n+m=k1b,m=k2b。
k2b+n=k1bn=(k1−k2)b
所以gcd(n,m)至少等于b。
得证。
对于第二个结论,我们可知由于gcd(i,p)=1,φ(i∗p)=φ(p)∗φ(i),并且φ(p)=p−1(性质一,性质三),得证。
性质八
直接给式子吧…
n=∑d|nφ(d)
根据上面那条式子可以继续推点显而易见的东西
∑i=1ni=∑i=1n∑d|iφ(d)=∑d=1nφ(d)∗⌊nd⌋
反演一下,φ(n)=∑d|nμ(d)∗nd
欧拉函数应用:
线筛φ函数:
应用1:
phi(p) == p-1 因为素数p除了1以外的因子只有p,所以与p 互素的个数是p - 1个
应用2:
phi(p^k) == p^k - p^(k-1) == (p-1) * p^(k-1)
证明:
令n == p^k,小于 n 的正整数共有 p^k-1 个,其中与p 不互素的个数共p^(k-1)-1 个,它们是1*p,2*p,3*p ... (p^(k-1)-1)*p
所以phi(p^k) == (p^k-1) - (p^(k-1)-1) == p^k - p^(k-1) == (p-1) * p^(k-1)。
应用3:
如果i mod p == 0, 那么 phi(i * p) == p * phi(i)
[1,i ]中与i不互质的数是i-phi(i)个,[1,i*p]中是i*p-p*phi(i)个,
又i与i*p没有不同的因数,顾[1,i*p]中与i*p不互质的也是i*p-p*phi(i)个,
举个例子:
假设 p = 3,i = 6,p * i = 18 = 2 * 3^2;
phi(3 * 6) == 18*(1-1/2)*(1-1/3) = 6
p * phi(i) = 3 * phi(6) = 3 * 6 * (1-1/2) * (1-1/3) = 6 = phi(i * p) 正确
应用4:
如果i mod p != 0, 那么 phi(i * p) == phi(i) * (p-1)
证明:
i mod p 不为0且p为质数,所以i与p互质,那么根据积性函数的性质 phi(i * p) == phi(i) * phi(p)其中phi(p) == p-1
所以 phi(i * p) == phi(i) * (p-1).
再举个例子:
假设i = 4, p = 3, i * p = 3 * 4 = 12
phi(12) = 12 * (1-1/2) * (1-1/3) = 4
phi(i) * (p-1) = phi(4) * (3-1) = 4 * (1-1/2) * 2 = 4 = phi(i * p)正确
- 数论基础 (费马小定理/扩展欧几里得/欧拉函数)
- 数论基础 扩展欧几里得 线性筛 逆元 欧拉函数 Lucas定理
- 欧拉定理 & 费马定理吗 & 欧几里得 & 扩展欧几里得
- 欧拉定理 & 费马定理吗 & 欧几里得 & 扩展欧几里得
- 模板整理:数论---组合数/欧几里得/孙子定理/费马小定理/欧拉定理及相关
- 数论--欧几里得和扩展的欧几里得定理
- nyoj-Color the necklace(Ploya定理 + 欧拉函数 + 扩展欧几里得(求逆元))
- nyoj-Color the necklace(Ploya定理 + 欧拉函数 + 扩展欧几里得(求逆元))
- 【数论】【素数】素数相关基础——欧拉函数与欧拉定理
- 【数论】欧拉定理
- 欧拉定理、费马小定理和扩展欧拉定理
- 数论的欧拉定理证明&欧拉函数公式
- 数论的欧拉定理证明 & 欧拉函数公式
- UVa 10692 - Huge Mod (数论 + 欧拉定理扩展)
- 逆元的几种求法(扩展欧几里得,费马小定理或欧拉定理,特例,打表等)
- 数论之 素因子分解,素数筛选法,欧拉函数和扩展欧几里得算法 (整理)
- HHU暑期第一弹——小小小数论(欧拉函数+埃式筛法+分解质因数+欧几里得算法+扩展欧几里得算法和模线性方程)
- 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)
- java-JFrame(JButton按钮)
- 关于自然语言理解的一些理解
- 谷歌推遥感护婴专利:可远程锁门断电
- ShaderWeaver使用教程-文字渐隐渐现
- Mastering Concurrency in Go.pdf 英文原版 免费下载
- 数论基础 (费马小定理/扩展欧几里得/欧拉函数)
- 从0开始教你申请服务器搭建ss服务并开启多账号访问外网
- linux/Unix系统调用之getopt()
- 9.springboot整合swagger2生成rest-api
- typedef 以及vector的应用
- unity3d shader BIllboard 使模型始终朝向摄像机
- 谷歌AI中国中心北京成立 提供高质量AI及机器学习教育支持
- 金山云完成3亿美元D轮融资 未来将布局AI领域
- Parallel and Concurrent Programming in Haskell.pdf 英文原版 免费下载