Skip to content

初等数论 第三章 同余方程 ​

同余式 ​

∀m∈Z+,f(x)=anxn+an−1xn−1+⋯+a1x+a0≡0mod  m\forall m \in \Z^+,\\ f(x) = a_n x^n + a_{n-1} x^{n-1} + \dots + a_1x + a_0 \equiv 0 \mod m

为模 mm 的同余式 。

如果 m∤anm \nmid a_n 称 nn 为 f(x)f(x) 的次数 deg⁡f\deg f,而 f(x)f(x) 称为 模 mm 的 nn 次同余式 。

如果我们能找到一个解 a∈Za \in \Z,那么所有满足 a′≡amod  ma' \equiv a \mod m 的 a′a' 都是它的解 。

Ca={a′∣a∈Z,a′≡amod  m}C_a = \{a'\mid a\in \Z, a' \equiv a \mod m\}

IMPORTANT

剩余类中的所有解看作一个解,用 x≡amod  mx \equiv a \mod m 规范表述 。

什么时候看作不同的解呢?

当 a1,a2a_1, a_2 都是同余式的解,且它们对模 mm 不同余(即 a1mod  m≠a2mod  ma_1 \mod m \neq a_2 \mod m 时) ,称 a1,a2a_1, a_2 为不同的解。

解数:模 mm 同余式的解数是所有对模 mm 两两不同余的解的个数,它至多为 mm 。

一次同余式 ​

定理 设 m∈Z+,a∈Zm \in \Z^+, a \in \Z 一次同余式 ax≡1mod  max \equiv 1 \mod m 有解 ⇔(a,m)=1\lrArr (a,m)=1 且在有解时该解是唯一的 。

证明

存在性

(a,m)=1⇒sa+tm=1(扩展欧几里得算法)sa≡1(modm)(模m)⇒x≡s(modm) 是 ax≡1(modm) 的一个解假设还有解 x′, 则 a(x′−x)≡0(modm)因为 (a,m)=1, 所以 m∣(x′−x),即 x′≡x(modm)则还在同一个剩余系内,视为一个解. (唯一性得证)(a,m)=1 \rArr sa+tm=1 \quad (\text{扩展欧几里得算法})\\ sa \equiv 1 \pmod m \quad (\text{模} m)\\ \rArr x \equiv s \pmod m \text{ 是 } ax \equiv 1 \pmod m \text{ 的一个解} \\ \text{假设还有解 } x', \text{ 则 } a(x'-x) \equiv 0 \pmod m \\ \text{因为 } (a,m)=1, \text{ 所以 } m \mid (x'-x) \text{,即 } x' \equiv x \pmod m \\ \text{则还在同一个剩余系内,视为一个解. (唯一性得证)}

必要性

如果同余式 ax≡1mod  max \equiv 1 \mod m 有解 x≡x0(modm)x \equiv x_0 \pmod m,则存在整数 qq 使得 ax0=1+qmax_0 = 1 + qm,即 ax0−qm=1ax_0 - qm = 1 ,因此有 (a,m)=1(a,m)=1 。

定理 设 m∈Z+,m∤a,d=(a,m)m \in \Z^+, m \nmid a, d = (a,m) 则 ax≡bmod  max \equiv b \mod m 有解 ⇔\lrArr d∣bd \mid b 。且在有解时解数必为 dd 。

证明

⇒\Rightarrow (必要性)

ax≡bmod  max \equiv b \mod m 有解 x≡x0(modm)x \equiv x_0 \pmod m 意味着 m∣(ax0−b)m \mid (ax_0 - b) 。 因为 d∣md \mid m 且 m∣(ax0−b)m \mid (ax_0 - b),所以 d∣(ax0−b)d \mid (ax_0 - b) 。 又因为 d∣ad \mid a,所以 d∣ax0d \mid ax_0 。 因此 d∣(ax0−(ax0−b))d \mid (ax_0 - (ax_0 - b)),即 d∣bd \mid b 。

⇐\Leftarrow (充分性)

设 d=(a,m)d=(a,m) 且 d∣bd \mid b。 因为 (ad,md)=1(\frac{a}{d}, \frac{m}{d}) = 1,存在整数 s,ts, t 使得 s⋅ad+t⋅md=1s \cdot \frac{a}{d} + t \cdot \frac{m}{d} = 1 。 两边同乘以 bd\frac{b}{d}: s⋅ad⋅bd+t⋅md⋅bd=bds \cdot \frac{a}{d} \cdot \frac{b}{d} + t \cdot \frac{m}{d} \cdot \frac{b}{d} = \frac{b}{d}a⋅(s⋅bd)+m⋅(t⋅bd)=ba \cdot (s \cdot \frac{b}{d}) + m \cdot (t \cdot \frac{b}{d}) = ba⋅(s⋅bd)≡b(modm)a \cdot (s \cdot \frac{b}{d}) \equiv b \pmod m 。 这说明 x≡s⋅bd(modm)x \equiv s \cdot \frac{b}{d} \pmod m 是一个解 。

求解的一般方法 ​

设 x0=s⋅bdx_0 = s \cdot \frac{b}{d} 是一个特解,则 ax≡bmod  max \equiv b \mod m 的全部解为 :

x≡x0+k⋅mdmod  m,(k=0,1,…,d−1)x \equiv x_0 + k \cdot \frac{m}{d} \mod m, \quad (k = 0, 1, \dots, d-1)

代入特解的表达式:

x≡s⋅bd+k⋅mdmod  m,(k=0,1,…,d−1)x \equiv s \cdot \frac{b}{d} + k \cdot \frac{m}{d} \mod m, \quad (k = 0, 1, \dots, d-1)

逆元 ​

aa 是模 mm 的简化剩余 ⇔a\lrArr a 是模 mm 的可逆元 。

定义:对于 m∈Z+,a∈Zm \in \Z^+, a \in \Z,如果存在 a0∈Za_0 \in \Z 使得 aa0≡1mod  ma a_0 \equiv 1 \mod m,则称 aa 是模 mm 的可逆元,并将 a0a_0 称为 aa 模 mm 的逆元,记作 a−1(modm)a^{-1} \pmod m 。

性质: aa 模 mm 的逆元存在当且仅当 (a,m)=1(a,m)=1 。

孙子定理(中国剩余定理) ​

解一次同余方程组:

{  f1(x)≡0mod  m1  f2(x)≡0mod  m2  …  fn(x)≡0mod  mn\begin{cases}     f_1(x) \equiv 0 \mod m_1\\     f_2(x) \equiv 0 \mod m_2\\     \dots\\     f_n(x) \equiv 0 \mod m_n \end{cases}

对于两两互素的 m1,m2,…mk∈Z+,b1,b2,…,bk∈Zm_1, m_2, \dots m_k \in \Z^+, b_1, b_2, \dots, b_k \in \Z 则下面的一次同余方程组有解 ,且解在模 m1m2…mkm_1 m_2 \dots m_k 下的意义唯一 :

{x≡b1mod  m1x≡b2mod  m2…x≡bkmod  mk \begin{cases} x \equiv b_1 \mod m_1\\ x \equiv b_2 \mod m_2\\ \dots\\ x \equiv b_k \mod m_k\\   \end{cases}

其解的表达式

令

m=∏i=1kmi,Mj=mmj,Mj′Mj≡1mod  mj(其中 Mj′ 是 Mj 模 mj 的逆元)(j=1,2,⋯k)m = \prod_{i=1}^{k} m_i,\\ M_j = \frac{m}{m_j}, \quad M_j'M_j \equiv 1 \mod m_j \quad (\text{其中 } M_j' \text{ 是 } M_j \text{ 模 } m_j \text{ 的逆元}) \\ (j = 1, 2, \dotsb k)\\

则解为:

x≡∑i=1kMi′Mibimod  mx \equiv \sum_{i=1}^{k} M_i'M_ib_i \mod m

这是一个构造式的解。

证明中国剩余定理 ​

唯一性证明

设 rr 和 ss 都是同余方程组的解 。

{r≡bimod  mis≡bimod  mi  ⟹  r≡smod  mi,∀i=1,2,…,k\begin{cases} r \equiv b_i \mod m_i\\ s \equiv b_i \mod m_i \end{cases} \implies r \equiv s \mod m_i, \quad \forall i=1, 2, \dots, k

因此 mi∣(r−s)m_i \mid (r-s),即 r−sr-s 是所有 mim_i 的公倍数 。

r≡smod  [m1,m2,…,mk]r \equiv s \mod [m_1, m_2, \dots, m_k]

由于 m1,m2,…,mkm_1, m_2, \dots, m_k 两两互素,它们的最小公倍数等于它们的乘积,即 [m1,m2,…,mk]=m1m2…mk=m[m_1, m_2, \dots, m_k] = m_1 m_2 \dots m_k = m 。 故 r≡smod  mr \equiv s \mod m ,解在模 mm 的意义下是唯一的。

构造式证明(存在性)

构造的解 x0=∑i=1kMi′Mibix_0 = \sum_{i=1}^{k} M_i'M_ib_i 满足方程组:

对于任意一个 mjm_j:

x0≡∑i=1kMi′Mibi(modmj)x_0 \equiv \sum_{i=1}^{k} M_i'M_ib_i \pmod{m_j}

由于当 i≠ji \neq j 时,mj∣Mim_j \mid M_i (因为 Mi=m/miM_i = m/m_i),所以 Mi≡0(modmj)M_i \equiv 0 \pmod{m_j} 。 只有 i=ji=j 的项不为零:

x0≡Mj′Mjbj(modmj)x_0 \equiv M_j'M_jb_j \pmod{m_j}

因为 Mj′Mj≡1(modmj)M_j'M_j \equiv 1 \pmod{m_j},所以

x0≡1⋅bj≡bj(modmj)x_0 \equiv 1 \cdot b_j \equiv b_j \pmod{m_j}

这表明 x0x_0 是方程组的一个解 。

NOTE

课纲要求:了解中国剩余定理的递归证明

递归式证明

设 xi−1x_{i-1} 是前 i−1i-1 个同余式解,即 x≡xi−1(modNi−1)x \equiv x_{i-1} \pmod{N_{i-1}},其中 Ni−1=m1m2…mi−1N_{i-1} = m_1 m_2 \dots m_{i-1} 。 现在求解包含第 ii 个同余式的方程组:

{x≡xi−1mod  Ni−1x≡bimod  mi\begin{cases} x \equiv x_{i-1} \mod N_{i-1}\\ x \equiv b_i \mod m_i \end{cases}

由第一个方程,设 x=xi−1+yi−1⋅Ni−1x = x_{i-1} + y_{i-1} \cdot N_{i-1} 。 代入第二个方程:

xi−1+yi−1⋅Ni−1≡bi(modmi)  ⟹  yi−1⋅Ni−1≡bi−xi−1(modmi)x_{i-1} + y_{i-1} \cdot N_{i-1} \equiv b_i \pmod{m_i} \\ \implies y_{i-1} \cdot N_{i-1} \equiv b_i - x_{i-1} \pmod{m_i}

由于 (Ni−1,mi)=1(N_{i-1}, m_i) = 1 (因为 mjm_j 两两互素),所以 Ni−1N_{i-1} 模 mim_i 的逆元 Ni−1′N_{i-1}' 存在,满足 Ni−1⋅Ni−1′≡1(modmi)N_{i-1} \cdot N_{i-1}' \equiv 1 \pmod{m_i} 。 同乘以 Ni−1′N_{i-1}':

yi−1≡(bi−xi−1)⋅Ni−1′(modmi)y_{i-1} \equiv (b_i - x_{i-1}) \cdot N_{i-1}' \pmod{m_i}

设 yi−1(0)y_{i-1}^{(0)} 是这个解的某个代表元,则 yi−1=yi−1(0)+qmiy_{i-1} = y_{i-1}^{(0)} + q m_i。 代回 xx 的表达式,得到第 ii 个解 xix_i:

xi=xi−1+yi−1(0)⋅Ni−1(modm1m2…mi)x_i = x_{i-1} + y_{i-1}^{(0)} \cdot N_{i-1} \pmod{m_1 m_2 \dots m_i}

这样就将 i−1i-1 个方程的解扩展到了 ii 个方程的解,重复 kk 次即可得到最终解 xkx_k 。

中国剩余定理的应用 ​

快速计算大整数取模

若 xx 是一个大整数,要求计算它模 mm 的值,我们可以把 mm 拆成两两互素的 m1,m2,…mkm_1, m_2, \dots m_k,建立一个同余方程组:

{  x≡b1mod  m1  x≡b2mod  m2  …  x≡bkmod  mk\begin{cases}     x \equiv b_1 \mod m_1\\     x \equiv b_2 \mod m_2\\     \dots\\     x \equiv b_k \mod m_k \end{cases}

求解这个方程组就可以得到 xmod  mx \mod m 的解。

这么做的好处:

  • 减少计算复杂度:对于模 ll bit 整数的质数运算,从传统的 O((2l)3)O((2l)^3) 复杂度可以减少到 O(2l3)O(2l^3) 复杂度,减少了常数 。
  • 并行计算可能性:将大数模运算分解成多个小模运算,可以利用并行计算提高效率 。

计算样例:计算 21000000mod  772^{1000000} \mod 77 。 m=77=7×11m = 77 = 7 \times 11,其中 (7,11)=1(7, 11)=1。 转化为同余方程组:

{x≡21000000mod  7x≡21000000mod  11\begin{cases} x \equiv 2^{1000000} \mod 7\\ x \equiv 2^{1000000} \mod 11 \end{cases}

  1. 计算 b1=21000000mod  7b_1 = 2^{1000000} \mod 7: 由费马小定理,26≡1mod  72^6 \equiv 1 \mod 7。 1000000=6×166666+41000000 = 6 \times 166666 + 4 。 21000000=(26)166666⋅24≡1166666⋅16≡16≡2mod  72^{1000000} = (2^6)^{166666} \cdot 2^4 \equiv 1^{166666} \cdot 16 \equiv 16 \equiv 2 \mod 7。 b1=2b_1 = 2 。
  2. 计算 b2=21000000mod  11b_2 = 2^{1000000} \mod 11: 由费马小定理,210≡1mod  112^{10} \equiv 1 \mod 11。 1000000=10×1000001000000 = 10 \times 100000 。 21000000=(210)100000≡1100000≡1mod  112^{1000000} = (2^{10})^{100000} \equiv 1^{100000} \equiv 1 \mod 11。 b2=1b_2 = 1 。

现在解方程组:

{x≡2mod  7(m1=7,b1=2)x≡1mod  11(m2=11,b2=1)\begin{cases} x \equiv 2 \mod 7 \quad (m_1=7, b_1=2)\\ x \equiv 1 \mod 11 \quad (m_2=11, b_2=1) \end{cases}

m=77,M1=11,M2=7m = 77, M_1 = 11, M_2 = 7 。 求逆元: M1′M1≡1mod  m1  ⟹  11M1′≡1mod  7  ⟹  4M1′≡1mod  7M_1' M_1 \equiv 1 \mod m_1 \implies 11 M_1' \equiv 1 \mod 7 \implies 4 M_1' \equiv 1 \mod 7. 解得 M1′=2M_1'=2 。 M2′M2≡1mod  m2  ⟹  7M2′≡1mod  11M_2' M_2 \equiv 1 \mod m_2 \implies 7 M_2' \equiv 1 \mod 11. 解得 M2′=8M_2'=8 。 解为:

x≡M1′M1b1+M2′M2b2mod  mx≡2⋅11⋅2+8⋅7⋅1mod  77x≡44+56mod  77x≡100mod  77x≡23mod  77x \equiv M_1' M_1 b_1 + M_2' M_2 b_2 \mod m \\ x \equiv 2 \cdot 11 \cdot 2 + 8 \cdot 7 \cdot 1 \mod 77 \\ x \equiv 44 + 56 \mod 77 \\ x \equiv 100 \mod 77 \\ x \equiv 23 \mod 77

因此 21000000mod  77=232^{1000000} \mod 77 = 23 。

高次同余方程 ​

技巧 3-4 恒等式

若 h(x)≡0(modm)h(x) \equiv 0 \pmod m 有 mm 个解。

f(x)=q(x)h(x)+r(x)≡b(modm)⇒r(x)≡b(modm)f(x) = q(x)h(x) + r(x) \equiv b \pmod m\\ \rArr\\ r(x) \equiv b \pmod m

如:

  2x7−x5−3x3+6x+1≡0(mod5)  2x7−x5−3x3+6x+1=(2x2−1)(x5−x)+(−x3+5x+1)  2x7−x5−3x3+6x+1≡−x3+5x+1≡−x3+1(mod5)\begin{align*}     2x^7 - x^5 - 3x^3 + 6x + 1 &\equiv 0 \pmod 5\\     2x^7 - x^5 - 3x^3 + 6x + 1 &= (2x^2 - 1)(x^5 - x) + (-x^3 + 5x + 1)\\     2x^7 - x^5 - 3x^3 + 6x + 1 & \equiv -x^3 + 5x + 1 \equiv -x^3 + 1 \pmod 5 \end{align*}

(注:这里利用了费马小定理推论 xp−x≡0(modp)x^p - x \equiv 0 \pmod p)

技巧 3-5 设 dd 是 mm 的正因子

{  m∣f(x)  d∣m⇒d∣f(x)\begin{cases}     m \mid f(x)\\     d \mid m \end{cases} \rArr d \mid f(x)

f(x)≡0(modm) 有解 ⇒f(x)≡0(modd) 有解f(x) \equiv 0 \pmod m \text{ 有解 } \rArr f(x) \equiv 0 \pmod d \text{ 有解}

这个结论可以用来证明方程无解(逆否命题):

f(x)≡0(modd) 无解 ⇒f(x)≡0(modm) 无解f(x) \equiv 0 \pmod d \text{ 无解 } \rArr f(x) \equiv 0 \pmod m \text{ 无解}

多项式的 gcd⁡\gcd ​

回顾多项式的除法和多项式 gcd⁡\gcd,在求解模素数 pp 的同余方程时,可以利用恒等式进行降次: 定理:对于 f(x)(modp)f(x) \pmod p,存在多项式 q(x),r(x)q(x), r(x) 使得 deg⁡(r(x))<p\deg(r(x)) < p 且 :

f(x)=(xp−x)q(x)+r(x)f(x) = (x^p - x)q(x) + r(x)

从而有:

f(x)≡0(modp)⇔r(x)≡0(modp)f(x) \equiv 0 \pmod p \lrArr r(x) \equiv 0 \pmod p

解的个数 ​

分解 mm 若 m=m1m2…mkm = m_1 m_2 \dots m_k,且 mim_i 两两互素:

f(x)≡0(modm)f(x) \equiv 0 \pmod m

与

{  f(x)≡0(modm)1  f(x)≡0(modm)2  …  f(x)≡0(modm)k\begin{cases}     f(x) \equiv 0 \pmod m_1\\     f(x) \equiv 0 \pmod m_2\\     \dots\\     f(x) \equiv 0 \pmod m_k \end{cases}

等价。前者的解数 TT 为后者的每一条方程的解数 TiT_i 的乘积:

T=∏i=1kTiT = \prod_{i=1}^k T_i

充分性

对于同余方程组的每一个解 (c1,c2,…,ck)\left(c_1, c_2, \dots, c_k\right),其中 cic_i 是 f(x)≡0(modmi)f(x) \equiv 0 \pmod{m_i} 的解。根据中国剩余定理,存在唯一的 x0(modm)x_0 \pmod m 满足 x0≡ci(modmi)x_0 \equiv c_i \pmod{m_i} 。 对于这个 x0x_0:

f(x0)≡f(ci)≡0(modmi),∀i=1,…,kf(x_0) \equiv f(c_i) \equiv 0 \pmod{m_i}, \quad \forall i=1, \dots, k

从而 f(x0)≡0(modm)f(x_0) \equiv 0 \pmod m ,因此 x0x_0 是原方程的解。解数是所有分量方程解数的乘积。

必要性

设 x0x_0 是 f(x)≡0(modm)f(x) \equiv 0 \pmod m 的解,即 m∣f(x0)m \mid f(x_0) 。 由于 mi∣mm_i \mid m,所以 mi∣f(x0)m_i \mid f(x_0),即 f(x0)≡0(modmi)f(x_0) \equiv 0 \pmod{m_i} 。 因此 x0x_0 也是方程组 {f(x)≡0(modm)1…\begin{cases} f(x) \equiv 0 \pmod m_1 \\ \dots \end{cases} 的解。 同时,如果 x1≢x2(modm)x_1 \not\equiv x_2 \pmod m,那么它们必有一对 mim_i 不同余 。因此,原方程的每个解都对应方程组的一个唯一的解组合。

定理 (模素数 pp)

如果 x≡c1,c2,…,ck(modp)x\equiv c_1, c_2 ,\dots, c_k \pmod p 是 f(x)≡0(modp)f(x) \equiv 0 \pmod p 的不同解,则:

f(x)≡∏i=1k(x−ci)fk(x)(modp)f(x) \equiv \prod_{i=1}^k (x-c_i) f_k(x) \pmod p

着告诉我们 解的个数 kk 至多为多项式的次数 nn,即 k≤min⁡(deg⁡f,p)k \leq \min(\deg f, p)。

推论

次数小于 pp 的同余方程 f(x)≡0(modp)f(x) \equiv 0 \pmod p 的解数为 pp 当且仅当 p∣f(x)p \mid f(x) 的每一个系数。

求解模为素数幂的同余方程 ​

m=∏i=1kpiαi⇒f(x)≡0(modm)m = \prod_{i=1}^{k} p_i^{\alpha_i} \rArr f(x) \equiv 0 \pmod m

根据同余式的分解性,求解 f(x)≡0(modm)f(x) \equiv 0 \pmod m 等价于求解 f(x)≡0(modpiαi)f(x) \equiv 0 \pmod{p_i^{\alpha_i}} 的系统 。

求解 f(x)≡0(modpα)f(x) \equiv 0 \pmod {p^{\alpha}},通常采用 Hensel's Lemma (汉斯尔引理),从模 pp 的解逐步“提升”到模 p2,…,pαp^2, \dots, p^{\alpha} 的解。

基本思路 (解的提升):

  1. 首先求出 f(x)≡0(modp)f(x) \equiv 0 \pmod p 的解 x≡c(modp)x \equiv c \pmod p 。
  2. 假设我们已求得 f(x)≡0(modpi−1)f(x) \equiv 0 \pmod {p^{i-1}} 的解 x≡ci−1(modpi−1)x \equiv c_{i-1} \pmod {p^{i-1}}。
  3. 我们寻找 f(x)≡0(modpi)f(x) \equiv 0 \pmod {p^i} 的解 x≡ci(modpi)x \equiv c_i \pmod {p^i},其中 cic_i 满足 ci=ci−1+k⋅pi−1c_i = c_{i-1} + k \cdot p^{i-1},其中 k∈{0,1,…,p−1}k \in \{0, 1, \dots, p-1\}。
  4. 将 cic_i 代入 f(x)≡0(modpi)f(x) \equiv 0 \pmod {p^i} 并进行泰勒展开,利用 f(ci−1)≡0(modpi−1)f(c_{i-1}) \equiv 0 \pmod {p^{i-1}} 的条件,可以得到关于 kk 的一个线性同余式:

    f′(ci−1)⋅k≡−f(ci−1)pi−1(modp)f'(c_{i-1}) \cdot k \equiv \frac{-f(c_{i-1})}{p^{i-1}} \pmod p

  5. 根据 f′(ci−1)(modp)f'(c_{i-1}) \pmod p 的值,分情况讨论 kk 的解(00 个, 11 个,或 pp 个解),从而确定 cic_i 的个数,然后重复此过程直到求得 (modpα)\pmod {p^\alpha} 的解 。

CC BY-NC-SA 4.0