密码学数学基础 笔记 4:从同余类和模运算出发,理解约消、完全剩余系、简化剩余系与欧拉函数

同余与剩余系

前面用整除、最大公因数和 Bézout 等式研究整数。固定一个正整数 mm 后,可以把相差 mm 的倍数的整数放在一起计算。这就是同余的出发点

同余与剩余类

若 m∣(a−b)m\mid(a-b),称 a,ba,b 模 mm 同余,记为

a≡b(modm)⟺a−b∈mZa\equiv b\pmod m\quad\Longleftrightarrow\quad a-b\in m\mathbb Z

这也等价于 a,ba,b 除以 mm 得到相同的最小非负余数。例如 −1≡5(mod6)-1\equiv5\pmod6。同余满足自反、对称和传递性,因此把整数分成互不相交的剩余类:

[a]m=a+mZ={a+km:k∈Z}[a]_m=a+m\mathbb Z=\{a+km:k\in\mathbb Z\}

一个类含有无穷多个整数,但模 mm 恰有 mm 个不同的类:

Z/mZ={[0]m,[1]m,…,[m−1]m}\mathbb Z/m\mathbb Z=\{[0]_m,[1]_m,\ldots,[m-1]_m\}

类的加法、乘法由代表元定义:

[a]m+[b]m=[a+b]m,[a]m[b]m=[ab]m[a]_m+[b]_m=[a+b]_m,\qquad [a]_m[b]_m=[ab]_m

这些运算不依赖代表元的选择。若 a≡a′a\equiv a'、b≡b′(modm)b\equiv b'\pmod m,则

(a+b)−(a′+b′)=(a−a′)+(b−b′),(a+b)-(a'+b')=(a-a')+(b-b'),

ab−a′b′=(a−a′)b+a′(b−b′),ab-a'b'=(a-a')b+a'(b-b'),

两式右侧都被 mm 整除。同理,同余可以代入任意整数系数多项式:a≡b(modm)a\equiv b\pmod m 蕴含 f(a)≡f(b)(modm)f(a)\equiv f(b)\pmod m。这里替换的是底数;指数同余本身不能直接用于替换指数,例如 1≡6(mod5)1\equiv6\pmod5,但 21≢26(mod5)2^1\not\equiv2^6\pmod5

完全剩余系与约消

从每个剩余类各取一个整数,就得到模 mm 的一个完全剩余系(CRS)。0,1,…,m−10,1,\ldots,m-1 是标准例子;任意连续 mm 个整数也可以。选取的代表元无需连续,例如 {6,14,7}\{6,14,7\} 模 33 分别代表 0,2,10,2,1

模运算虽然保留加法、乘法,却不能无条件约去乘法因子。比如

2⋅2≡2⋅0(mod4),2≢0(mod4)2\cdot2\equiv2\cdot0\pmod4, \qquad 2\not\equiv0\pmod4

原因是 [2]4[2]4=[0]4[2]_4[2]_4=[0]_4:非零剩余类的乘积也可能为零。设 d=gcd⁡(k,m)d=\gcd(k,m),正确的约消规则是

ka≡kb(modm)⟺a≡b(modm/d)\boxed{ka\equiv kb\pmod m\quad\Longleftrightarrow\quad a\equiv b\pmod{m/d}}

证明时先将 m∣k(a−b)m\mid k(a-b) 同除以 dd,再利用 gcd⁡(k/d,m/d)=1\gcd(k/d,m/d)=1 约去 k/dk/d。特别地,若 gcd⁡(k,m)=1\gcd(k,m)=1,模数保持为 mm。此时乘以 kk 是剩余类上的一个置换,因而 {ka:a∈R}\{ka:a\in R\} 仍是完全剩余系,其中 RR 是任一完全剩余系。再加一个固定整数 ℓ\ell,映射 x↦kx+ℓx\mapsto kx+\ell 依然是置换

若模数是素数 pp,欧几里得引理还给出

ab≡0(modp)⟹a≡0(modp) 或 b≡0(modp)ab\equiv0\pmod p\quad\Longrightarrow\quad a\equiv0\pmod p\ \text{或}\ b\equiv0\pmod p

逆元与简化剩余系

当 m>1m>1 时,aa 模 mm 有乘法逆元的充要条件是 gcd⁡(a,m)=1\gcd(a,m)=1。事实上,若扩展欧几里得算法给出

au+mv=1,au+mv=1,

就有 au≡1(modm)au\equiv1\pmod m,所以 uu 是逆元。反过来,逆元的存在意味着 11 是 a,ma,m 的整数线性组合,故二者互素。逆元作为剩余类是唯一的

例如 3⋅27=81≡1(mod40)3\cdot27=81\equiv1\pmod{40},所以 3−1≡27(mod40)3^{-1}\equiv27\pmod{40};而 22 模 4040 没有逆元

把所有与 mm 互素的剩余类各取一个代表元,得到简化剩余系(RRS)。例如模 1010 的简化剩余系可以取 {1,3,7,9}\{1,3,7,9\}。代表元本身不必是素数,“与模数互素”才是条件

简化剩余系的大小记为欧拉函数:

ϕ(m)=#{1≤a≤m:gcd⁡(a,m)=1}\phi(m)=\#\{1\le a\le m:\gcd(a,m)=1\}

约定 ϕ(1)=1\phi(1)=1。模 mm 的这些可逆类在乘法下构成一个大小为 ϕ(m)\phi(m) 的群。若 gcd⁡(k,m)=1\gcd(k,m)=1,乘以 kk 也会置换简化剩余系:每个乘积仍与 mm 互素,而约消保证它们互不相同

欧拉定理

设 a1,…,aϕ(m)a_1,\ldots,a_{\phi(m)} 是简化剩余系,且 gcd⁡(k,m)=1\gcd(k,m)=1。置换前后的所有元素相乘,有

(ka1)⋯(kaϕ(m))≡a1⋯aϕ(m)(modm)(ka_1)\cdots(ka_{\phi(m)}) \equiv a_1\cdots a_{\phi(m)}\pmod m

右侧的乘积可逆,约去后得到欧拉定理:

kϕ(m)≡1(modm)(gcd⁡(k,m)=1)\boxed{k^{\phi(m)}\equiv1\pmod m\qquad(\gcd(k,m)=1)}

当 m=pm=p 为素数,ϕ(p)=p−1\phi(p)=p-1,这就是费马小定理 p∤k⇒kp−1≡1(modp)p\nmid k\Rightarrow k^{p-1}\equiv1\pmod p。例如 3100≡34≡4(mod7)3^{100}\equiv3^4\equiv4\pmod7,因为 100=16⋅6+4100=16\cdot6+4

指数能按某个周期缩减,需要底数可逆,并明确相应周期;不能仅由“两个指数模 mm 同余”推出幂同余

不同模数之间的关系

若 m∣Mm\mid M,模 MM 同余蕴含模 mm 同余。写 M=dmM=dm,则一个模 mm 的类恰好分成 dd 个模 MM 的类:

[r]m=⨆j=0d−1[r+jm]M[r]_m=\bigsqcup_{j=0}^{d-1}[r+jm]_M

例如 [2]5[2]_5 在模 2525 下分成由 2,7,12,17,222,7,12,17,22 代表的五个类。反过来,若 a≡ba\equiv b 同时对若干模数 mim_i 成立,则

a≡b(modlcm⁡(m1,…,ms))a\equiv b\pmod{\operatorname{lcm}(m_1,\ldots,m_s)}

这是因为每个 mim_i 都整除 a−ba-b,故它们的最小公倍数也整除 a−ba-b

拼装剩余系

若 gcd⁡(m,n)=1\gcd(m,n)=1,分别令 aa、bb 遍历模 mm、模 nn 的完全剩余系,则

x=an+bmx=an+bm

遍历模 mnmn 的一个完全剩余系。若 a,ba,b 分别只遍历简化剩余系,得到的正好是模 mnmn 的简化剩余系。原因是模 mm 下 x≡anx\equiv an,模 nn 下 x≡bmx\equiv bm;n,mn,m 在对应模数下均可逆,因此两项坐标都能由 xx 唯一找回。注意这里的 a,ba,b 是用来遍历剩余类的坐标;若要让 xx 匹配事先指定的两个余数,还需要给权重乘上逆元,下一篇的中国剩余定理会处理

另一种拼装是混合进制。令 aa 遍历模 mm 的完全剩余系、bb 遍历模 nn 的完全剩余系,则

x=a+mbx=a+mb

也遍历模 mnmn 的完全剩余系,不要求 m,nm,n 互素。先对 mm 取余确定 aa,再减去 aa 并除以 mm,即可确定 bb 的类。连续应用便得到 a1+m1a2+m1m2a3+⋯a_1+m_1a_2+m_1m_2a_3+\cdots。这是一种逐位选代表元的方法;它一般不把各位的乘法变成独立的模乘法

欧拉函数的计算

互素模数的简化剩余系可以独立拼装,所以

gcd⁡(m,n)=1⟹ϕ(mn)=ϕ(m)ϕ(n)\gcd(m,n)=1\quad\Longrightarrow\quad\phi(mn)=\phi(m)\phi(n)

对素数幂 pep^e,11 到 pep^e 中恰有 pe−1p^{e-1} 个 pp 的倍数,因此

ϕ(pe)=pe−pe−1=pe−1(p−1)\phi(p^e)=p^e-p^{e-1}=p^{e-1}(p-1)

将 n=∏i=1spiein=\prod_{i=1}^s p_i^{e_i} 分解为互素的素数幂,得到

ϕ(n)=∏i=1spiei−1(pi−1)=n∏p∣n(1−1p)\boxed{\phi(n)=\prod_{i=1}^s p_i^{e_i-1}(p_i-1) =n\prod_{p\mid n}\left(1-\frac1p\right)}

例如 10!=28⋅34⋅52⋅710!=2^8\cdot3^4\cdot5^2\cdot7,所以

ϕ(10!)=128⋅54⋅20⋅6=829440\phi(10!)=128\cdot54\cdot20\cdot6=829440

乘法公式只适用于互素的两个输入。例如 ϕ(4)ϕ(6)=4\phi(4)\phi(6)=4,但 ϕ(24)=8\phi(24)=8;应先把 2424 写成互素的 23⋅32^3\cdot3

最后还有一个有用的计数恒等式:

∑d∣nϕ(d)=n\boxed{\sum_{d\mid n}\phi(d)=n}

证明是按 gcd⁡(a,n)\gcd(a,n) 给 1,…,n1,\ldots,n 分组。若 gcd⁡(a,n)=d\gcd(a,n)=d,则 a/da/d 与 n/dn/d 互素,这一组恰有 ϕ(n/d)\phi(n/d) 个元素。对所有 d∣nd\mid n 求和,再用 d↔n/dd\leftrightarrow n/d 重新编号,就得到上式


© 2024 本网站由 Ywang22 使用 Stellar主题 创建
总访问 次 | 本页访问 次
共发表 90 篇 Blog(s) · 总计 221k 字