关于同余
|总字数:3.6k|阅读时长:16分钟|浏览量:|
文章迁移信息
本文写于 240328
,原笔记名「🌻除法与模运算」,251011
由本地知识库迁移而来。
为了更好理解本章节,建议先学习 站内文章关于质数。
整除
如果 a 和 b 是整数,且 a=0,如果有整数 c 使得 b=ac,或者 b/a 是一个整数,我们称 a 整除 b。
- a 是 b 的一个因子(或除数,约数)。b 是 a 的一个倍数。
- 记号 a∣b 表示 a 整除 b,a∣b 表示 a 不能整除 b。
0 是所有非 0 整数的倍数。对于整数 b=0,b 的约数只有有限个。
a,b,c 是整数且 a=0,
- 如果 a∣b 且 a∣c ,那么 a∣(b+c)。同时也说明,如果 a 同时整除 b 和 c,那么它也必须整除 b 和 c 的差。
- 如果 a∣b ,那么对于任意整数 c 都有 a∣bc。
- 如果 a∣b 且 b∣c ,那么 a∣c。
小练习:证明任意相邻的两个奇数互质(互素)
- 如果 a,b,c 是整数且 a=0,满足 a∣b 和 a∣c,当 m 和 n 是整数时,有 a∣mb+nc 。
- a∣b⟺−a∣b⟺a∣−b⟺∣a∣∣∣b∣
- a∣b∧b∣a⟹b=±a
- 设 m=0,那么 a∣b⟺ma∣mb
- 设 b=0,那么 a∣b⟹∣a∣≤∣b∣
- 设 a=0,b=qa+c,那么 a∣b⟺a∣c
带余数除法
除法算法:如果 a 是一个整数且 d 是一个正整数,那么存在唯一整数 q 和 r,其中 0≤r<d, 使得 a=dq+r。
- d 称为除数
- a 称为被除数
- q 称为商
- r 称为余数。在这里的定义下,余数 r 是最小非负余数。
有:
q=r=a div damodd
小学数学常识之中学语文知识:「除」和「除以」
6÷2 读作:「六除以二」,也就是「(以)二除六」。在后一句中,主语是省略的(或者说主语就是你/我),谓语是「除」这个动作,宾语是作为分子的「六」,而「以二」则是状语。前一句是后一句的倒装。
同余
如果 a 和 b 为整数且 m 为正整数,则当 m 整除 a−b 时称 a 模 m 同余 b。
- a 模 m 同余 b,记为 a≡b (modm)
- a 和 b 不是模 m 同余的,记为 a≡b (modm)
「同余」有时也称「等价」。
定理
TY-3
:令 a 和 b 是整数,m 是正整数,则
a≡b (modm)⟺amodm=bmodm
ME:同余。顾名思义,就是两者之间都具有相同余数。

定理
TY-4
:令 m 为正整数,
a≡b (modm)⟺ 存在整数 k 使得 a = b + km.
令 m 是正整数,如果 a≡b (modm),c≡d (modm),则 a+c≡b+d (modm) 并且 ac≡bd (modm)

- 将有效同余的两边加上(或减去)同一个整数可以保持有效性。
- 如果 a≡b(modm) 那么 c+a≡c+b(modm),其中 c 是任意整数。
- 加减法移项:a+b≡c+d(modm),可以移项得到 a−c≡d−b(modm)
- 将有效同余的两边乘以同一个整数可以保持有效性。
- 如果 a≡b (modm) 那么 c⋅a≡c⋅b(modm),其中 c 是任意整数。
- 注意:将同余除以整数并不总是产生有效的同余。后文将会探讨。
设 m 是正整数且 a 和 b 是整数,那么:
- (a+b)modm=((amodm)+(bmodm))modm
- a⋅bmodm=((amodm)(bmodm))modm
ME:用法就是将它们拆成或合并成好算的数。
一般地,如果 x<0 且 0≤y<m,则式子 x≡y(modm) 相当于 xmodm+m=y
也就是用「模 m 加 m」可以把 x 调整为非负数。为避免判断 x<0,更一般的写法是 (xmodm+m)modm。这样无论 x 是正是负还是零,运算结果都会落在区间 [0,m−1] 中。
对于减法来说,当 a−b≥0 时,推论 TY-6
的加法恒等式可以调整为:
(a−b)modm=((amodm)−(bmodm)+m)modm
练习题:🟩 3379. 转换数组 - 力扣(LeetCode)
Python 中只要 m 是正整数,取模运算的结果就一定是非负整数。Java 会出现模运算结果为负数的情况。
在模意义下的除法,我们不能简单的将除数和被除数都取模。但是在某些情况下,模意义下的除法也有简化的运算。
如果 p 是一个质数,a 是 b 的倍数且 b 和 p 互质(b 不是 p 的倍数),那么有
ba modp=(a⋅bp−2)modp
上式中 a 和 b 可以是很大的数。
定理运用
本节定理不需死记硬背,仅供练习。
定理 TY-8
给定正整数 x,y,z,p,如果 ymodp=x,有:(y−z)modp=0⟺zmodp=x
证明:

ME:
- 使用分配律:(y−z)modp=0⟺(ymodp−zmodp)modp=0⟺(x−zmodp)modp=0。
- 速记方式:y 本身带有余数 x,但是减去 z 之后没余数了,说明 z 带着余数 x。
定理
TY-9
:给定正整数
x,y,z,p,有:
(y−z)modp=x⟺zmodp=(y−x)modp
证明:
ME:
- 使用分配律:(y−z)modp=x⟺(ymodp−zmodp)modp=xmodp⟺(ymodp−x−zmodp)modp=0
⟺((y−x)modp−zmodp)modp=0⟺(y−x)modp−zmodp=0 - 速记方式:y-z 携带余数的一部分 x。z 携带余数的另一部分,这部分就是 y 减去 x 后剩下的部分。

模指数运算
详看 站内文章快速幂算法。
线性同余方程
线性同余方程:同余方程中形式为 ax≡b (modm) 的方程,其中 m 是正整数,a 和 b 是整数,x 是变量。线性同余 ax≡b (modm) 的解都是满足该同余方程的整数 x。
使得 aˉa≡1(modm) 成立的整数 aˉ 被称为模 m 的逆。
定理 TY-10
:如果 a 和 m 为互素的整数且 m>1,则 a 模 m 的逆存在。而且这个模 m 的逆是唯一的。
即存在唯一小于 m 的正整数 ā 是 a 模 m 的逆,并且 a 模 m 的其他每个逆均与 ā 模 m 同余。(ME:注意这里的「唯一」的意思)。
证明:
- 存在性。
- 由于 gcd(a,m)=1,根据贝祖定理
ZS-5
,存在整数 s 和 t,使得 sa+tm=1。因此,sa+tm≡1 (modm). - 由于 tm≡0 (modm), 因此 sa≡1 (modm)
- 因此,s 是 a 模 m 的逆。
- 唯一性。
- 假设 s 和 r 都是 a 模 m 的逆。sa≡1 (modm),ra≡1 (modm),所以 sa≡ra (modm)
- 由于 gcd(a,m)=1,根据引理
ZS-9
,s≡r (modm)
例子:解线性同余方程
求线性同余方程 3x≡4 (mod7) 的解。
解:
- -2 是 3 模 7 的逆
- 两边同乘以 -2 得 −2⋅3x≡−2⋅4 (mod7)
- 因为 −6≡1 (mod7) (ME:毕竟 3 刚刚和它的逆 -2 相乘,那么 −6x≡1⋅x(mod7))
- 又因为 −8≡6 (mod7) (ME:所以结果的右边应为 6)
- 所以 x≡6 (mod7)
- x 的解是使得 x≡6 (mod7) 的整数,即 6,13,...,−1,−8…
求解同余方程的本质是求逆,求逆的本质是求贝祖系数。
中国剩余定理
故事 1:在公元一世纪时,中国数学家孙子问道:「有物不知其数,三分之余二,五分之余三,七分之余二,此物几何?」
故事 2:淮安民间传说着一则故事——韩信点兵,其次有成语「韩信点兵,多多益善」。韩信带 1500 名兵士打仗,战死四五百人,站 3 人一排,多出 2 人;站 5 人一排,多出 4 人;站 7 人一排,多出 3 人。
令 m1,m2,…,mn 为大于 1 的两两互素的正整数,而 a1,a2,…,an 是任意整数。则同余方程组
x≡a1(modm1)
x≡a2(modm2)
⋮
x≡an(modmn)
有唯一的 模 m=m1m2…mn 的 解。即存在一个数满足 0≤x≤m 的解 x,而所有其他的解均与此解模 m 同余。
证明:下图中的 TY-9
应为 TY-10

例子:求解同余方程组
例 1:利用中国剩余定理求解
x≡2(mod3)
x≡3(mod5)
x≡2(mod7)

例 2:使用反向替换方法求解
x≡1(mod5)
x≡2(mod6)
x≡3(mod7)

费马小定理
如果 p 是素数,对每个整数 a 都有 ap≡a (modp);
如果 p 是素数,p∣a,那么 ap−1≡1 (modp)。
以上两个命题,当 p∣a 时,命题等价;而当 p∣a 时,ap≡0≡a (modp) 平凡成立。因此,以上两个命题等价。
证明思路:

注意,费马小定理的逆命题不成立。
求 7121mod13
解题步骤:
- 根据费马小定理,712≡1(mod13)
- 那么根据分配律有 (712)k≡1(mod13),k 是任意整数
- 7121=712⋅10+1=(712)10⋅7≡110⋅7≡7(mod13)
同余的应用
校验位
比特串 x1x2…xn 的奇偶校验位 xn+1 定义为:
xn+1=x1+x2+⋯+xnmod2
保证整个串为双数个 1。
零售产品通常由其通用产品代码(UPC)标识。UPC 最常用的形式是 12 位十进制数字:第一位数字标识产品种类,接着五位标识制造商,再五位标识特定产品,最后一位 x12 是校验码。校验码由同余式决定:
3x1+x2+3x3+x4+3x5+x6+3x7+x8+3x9+x10+3x11+x12≡0mod10
所有图书都由一个国际标准书号(ISBN)标识。ISBN-10 包含不同分组来标识语言、出版商、出版公司赋予图书的编号、最后一位是校验码(或者是数字或者是字母 X 代表 10)。这个校验码的选择满足:
i∑10ixi≡0mod11
本文参考