同余
定义
若整数 a,b 除以正整数 m 的余数相等,则称 a,b 模 m 同余,记为 a≡b(modm)。
同余类和剩余系
对于 ∀a∈[0,m−1],集合 {a+km}(k∈Z) 的所有数模 m 同余,余数都为 a,该集合成为一个模 m 的同余类,记为 ¯¯¯a。
模 m 的同余类共有 m 个,分别为 ¯¯¯0,¯¯¯1,¯¯¯2,…,¯¯¯¯¯¯¯¯¯¯¯¯¯¯m−1。它们构成 m 的 完全剩余系。
1∼m 中与 m 互质的数代表的同余类共有 φ(m) 个,它们构成 m 的 简化剩余系。如,模 {¯¯¯1,¯¯¯3,¯¯¯7,¯¯¯9}。
简化剩余系关于模 m 乘法封闭。这是因为如果 a,b(1≤a,b≤m) 与 m 互质,则 a×b 也不可能与 m 含有相同的质因子,即 a×b 也与 m 互质。由余数的定义可得到 a×bmodm 也与 m 互质,即 a×bmodm 也属于 m 的简化剩余系。
乘法封闭指在一个集合中任意两个元素进行乘法运算,得到的结果还在这个集合中。例如对于集合 R,任意两个数的乘积都还在集合内,所以集合 R 是乘法封闭的。
费马小定理
∀p∈P,i∈Z+→ap≡a(modp)
欧拉定理
∀a,n∈P,a⊥n→aφ(n)≡1(modn)
Proof
设 n 的化简剩余系为 {¯¯¯¯¯a1,¯¯¯¯¯a2,…,¯¯¯¯¯¯¯¯¯¯¯φ(n)}。对于 ∀ai,aj,若 a⋅ai≡a⋅aj(modn),则 a×(ai−aj)≡0。因为 a⊥n,所以 ai−aj≡0,即 ai≡aj。所以当得到 ai≠aj 时,a⋅ai,a⋅aj 也表示不同的同余类。
并且简化剩余系关于模 n 乘法封闭,故 ¯¯¯¯¯¯¯aai 也在简化剩余系集合中。因此,集合 {¯¯¯¯¯a1,¯¯¯¯¯a2,…,¯¯¯¯¯¯¯¯¯¯¯aφ(n)} 与集合 {¯¯¯¯¯¯¯¯aa1,¯¯¯¯¯¯¯¯aa2,…,¯¯¯¯¯¯¯¯¯¯¯¯¯¯aaφ(n)} 都能表示 n 的简化剩余系。综上所述:
aφ(n)a1a2…aφ(n)≡(aa1)(aa2)…(aaφ(n))≡a1a2…aφ(n)(modn)
然后我们抽出第一项和最后一项,约掉 a1a2…aφ(n) 得到:
aφ(n)≡1
然后根据上次我们在欧拉函数中学习的内容:
∀p∈P,φ(p)=p−1
所以当 p∈P 时,我们发现只有 p 的倍数与 p 不互质,所以只要 a 不是 p 的倍数,就有 ap−1≡1(modp),然后我们两边同乘 a 就是 ap≡a(modp),另外,若 a 是 p 的倍数,费马小定理显然成立。
欧拉定理推论
若 a⊥n,则对于任意 b∈Z+,有 ab≡abmodφ(n)(modn)。
对于任意 a,n 不一定互质且 b>φ(n) 的情况,我们有 ab≡abmodφ(n)+φ(n)(modn)。
这是非常常用的技巧,对于不少要求模质数 P 之后再输出答案的计数题,我们是可以在面对 a+b,a−b,a×b 这样的算式的时候先把 a,b 对 p 取模来计算的,对于形如 ab 的乘方问题,可以把底数对 p 取模、指数对 φ(n) 取模,再计算乘方。
当然其实欧拉定理还有一个比较常用的推论:
对于 a,n∈Z+,若 a⊥n,则 ax≡1(modn) 的最小正整数 x0 为 φ(n) 的约数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效