欧拉定理及扩展(附超易懂证明)

欧拉定理#

gcd(a,m)=1,则满足 aφ(m)1(modm)

证明#

[1,m) 内与 m 互质的数为数列 {bn}={b1,b2,b3,,bφ(m)}

因为 a,m 互质且 bi,m 互质,所以数列 {An}={ab1,ab2,ab3,,abφ(m)} 中每个数都与 m 互质,且两两不同。

同时,由 gcd(abi,m)=1 可得 gcd(abimodm,m)=1,即每个 Ai 除以 m 的余数都与 m 互质,且余数两两不同。

可以用反证法推出“余数两两不同”。假设存在 abiabj(modm),那么 abiabj=km (kZ),即 a(bibj)=km。由于 am 互质,那么只能是 m(bibj),即 bibj(modm)。这与 1bi,bj<mbibj 的题设相违背,因此假设不成立。

所以 {An} 中的每个数一定与 {bn} 中的一个数同余,且一一对应。

所以 aφ(m)i=1φ(m)bii=1φ(m)abii=1φ(m)bi(modm)

所以 maφ(m)i=1φ(m)bii=1φ(m)bi

m(aφ(m)1)i=1φ(m)bi

又因为 gcd(m,i=1φ(m)bi)=1

所以 maφ(m)1

aφ(m)1(modm)

费马小定理#

p 为质数,则 ap11(modp)

证明:因为 p 为质数时,φ(p)=p1

扩展欧拉定理#

扩展到不要求互质。

ac{acmodφ(m)gcd(a,m)=1acgcd(a,m)1,c<φ(m)a(cmodφ(m))+φ(m)gcd(a,m)1,cφ(m)(modm)

证明#

case 1#

gcd(a,m)=1 时,由欧拉定理知 aφ(m)1(modm)

我们可以把指数 c 拆成 k×φ(m)+(cmodφ(m)),那么 ac=(aφ(m))k×acmodφ(m),再取模,就得到

acacmodφ(m)(modm)

case 2#

gcd(a,m)1c<φ(m) 时,

acac(modm)

(无需证明)

case 3#

gcd(a,m)1cφ(m) 时,

aca(cmodφ(m))+φ(m)(modm)

证明:

1.转化

要证明上式,只需证 a 的任意一个质因子 pi 满足 picpi(cmodφ(m))φ(m)(modm)

1.1 证明转化的正确性

如果上式成立,设 a 质因数分解的结果为 a=p1r1p2r2p3r3,其中 pi 为质因数,ri 为其对应的指数

根据同余式可乘可推出 (pic)ri(pi(cmodφ(m))φ(m))ri(modm)

进而 (p1r1p2r2p3r3)c(p1r1p2r2p3r3)(cmodφ(m))φ(m)(modm)

发现这就是 aca(cmodφ(m))+φ(m)(modm)

2.证明转化后的式子

那么现在要证明的东西已经转化,考虑如何证得 picpi(cmodφ(m))φ(m)(modm)(以下简称 pip

2.1 若 m,p 互质

问题转化为 case 1 的情况。为了防止你翻上去,我再推一遍:

gcd(m,p)=1pφ(m)1(modm)(欧拉定理)

可以将指数 c 拆成 k×φ(m)+(cmodφ(m)),那么 pc=(pφ(m))k×pcmodφ(m)

再对 m 取模,就得到 pc(pφ(m))k×pcmodφ(m)1k×pcmodφ(m)pcmodφ(m)p(cmodφ(m))+φ(m)(modm)

2.2 若 p,m 不互质

由于 p 为质数,则 m 必定 2p

m=s×pr,其中 r=logpm(看作把 m 质因数分解后含有 pr,剩下的都在 s 里,剩下的 s 不含因数 p),那么 gcd(s,pr)=gcd(s,p)=1

根据欧拉定理 pφ(s)1(mods)

因为 s,pr 互质,所以 φ(m)=φ(s)×φ(pr)(欧拉函数是积性函数),即 φ(s)φ(m)

结合欧拉定理 pφ(s)1(mods) 可得

pφ(m)=(pφ(s))φ(pr)1φ(pr)=1(mods)

同时乘以 pr 得到

pr+φ(m)pr(mods×pr)

m=s×pr,则 pr+φ(m)pr(modm)

题设条件 cφ(m),显然 φ(m)r

本蒟蒻觉得这一点也不显然,花了好久才证明出 φ(m)r……QAQ
下面附上我的证明方法(我觉得应该有更简单的方法)

首先 φ(m)=φ(s)×φ(pr)φ(pr)(等号在 s=1,2 时取到)

φ(pr)=prpr1=(p1)×pr1pr1p2,等号在 p=2 时取到)

数学归纳法证 pr1rr=1 时显然成立,假设 r=ipi1i 成立,可推知 pi=p×pi12×pi1=pi1+pi1pi1+1=i+1 成立,因此 pr1r 对任意的 p,rZ,p2,r1 成立

把上面所有的不等号串起来,就是 φ(m)r

那么 pc=pcr×prpcr×pr+φ(m)=pφ(m)+c(modm)

f(x)=xmodm(xφ(m)),上式表明:对于任意的正整数 xf(x+φ(m))=f(x)。反过来 f(x)=f(xφ(m)),但要注意定义域:此时 x 要满足 xφ(m)φ(m),即 x2φ(m)

如果要计算 f(c),可以递推上面那个式子,每次让 c=φ(m),但只有 c2φ(m) 时才可以这样操作。

我们知道,如果递推条件改成 cφ(m),显然最后递推得到的值为 cmodφ(m)。但现在条件是 c2φ(m),发现递推条件相差为 φ(m)c2φ(m)cφ(m) 少减一次 φ(m)。所以只需把这一次 φ(m) 加回来就好了,即 f(c)=f((cmodφ(m))+φ(m)),也就是

aca(cmodφ(m))+φ(m)(modm)

用途#

再也不用担心指数爆炸了!!指数也可以取模了

题目#

BZOJ3884(推公式)

BZOJ4869(+ 线段树)


参考 CSDN 博主「CaptainHarryChen」的证明思路。十分感谢。

原文链接:https://blog.csdn.net/can919/article/details/82318115

posted @   樱花赞  阅读(4559)  评论(6编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示
CONTENTS