Skip to content

定理Theorem

整数中国剩余定理

Chinese remainder theorem for integers

用最大公因数判定一般联立同余的相容性,并构造模最小公倍数唯一的解。

形式陈述 ​

若正整数 n1,…,nk 两两互素,则对任意整数 a1,…,ak,同余组

x≡ai(modni)(1≤i≤k)

存在解,并且所有解模

N=n1n2⋯nk

唯一。模数为 1 的条件对所有整数成立,可以先删去;若全部删去,则所有整数都是解。对余下的模数,令 Ni=N/ni,取 ui 满足 Niui≡1(modni),则

x≡∑i=1kaiNiui(modN)

给出显式解。等价地,环同态

Z/NZ⟶∏iZ/niZ

是同构。

一般地,不要求正整数 n1,…,nk 互素时,同余组有解当且仅当

gcd(ni,nj)∣(ai−aj)对每一对 i,j.

若相容,则存在一个整数 A,使全部解恰为

A+LZ,L=lcm(n1,…,nk).

因此,互素版本让任意余数都能拼接;一般版本则先检查共享的模数信息是否一致。

直觉

把一个整数模各个 ni 的余数排成一列,就得到它的局部坐标。两两互素保证这些坐标可以任意组合:改变其中一个余数,不必连带改变其他余数。

显式公式中的 Niui 就是坐标选择器。它模 ni 等于 1,又因含有其他所有模数的因子,在其余坐标上等于 0。乘上 ai 并把各项相加,就逐个装入所需余数。这里逆元 ui 的存在来自 gcd(Ni,ni)=1,可由 Bézout 等式求得。

若 x,y 都是解,每个 ni 都整除 x−y。由于模数两两互素,它们的乘积 N 也整除 x−y,这就说明了为什么解在模 N 意义下唯一。

两条同余怎样归并 ​

先考虑 x≡a(modm)、x≡b(modn),其中 m,n>0。令 d=gcd(m,n)。若 x 存在,则 d 同时整除 x−a 与 x−b,必有 d∣(b−a)。这一步给出了无需寻找 x 就能检查的必要条件。

反过来,若 d∣(b−a),用扩展 Euclidean 算法求出 um+vn=d,置

x0=a+mub−ad.

新增项是 m 的倍数,所以第一条同余保持成立;模 n 时 mu≡d,于是新增项恰好把余数从 a 改为 b。这便直接构造出一个解。两个解之差必须同时被 m,n 整除,故全部解为 x0+lcm(m,n)Z,其中 lcm(m,n)=mn/d。

把 x=a+mt 代入,也能把这一步写为

mdt≡b−ad(modn/d).

约去 d 后的 m/d 才与新模数互素;在原模数 n 下直接求 m 的逆元可能根本不可行。若 n/d=1,则 n∣m,相容性已保证第二条是第一条的后果,直接保留 x≡a(modm) 即可。

为什么任意有限多条只需两两检查 ​

必要性仍来自解之差。充分性的关键是:同一个素数的幂次约束可以排成一条从弱到强的链。对每个整除 L 的素数 p,取所有 ni 中出现的最大幂次 pEp,并选一条含有这个幂次的模数 ni(p)。先要求

x≡ai(p)(modpEp).

不同素数对应的 pEp 两两互素,已证的互素 CRT 因而给出一个 x。现在检查任意原条件 x≡aj(modnj):若 pe 是 nj 的素数幂分量,则 e≤Ep,且 pe∣gcd(nj,ni(p))。两两相容保证 aj≡ai(p)(modpe),所以构造出的 x 满足 nj 的每个素数幂分量,也就满足模 nj 的整条条件。

若 L=1,所有条件本来就没有限制;否则上述构造涵盖 L 的全部素因子。最后,两个解之差被每个 ni 整除,等价于被 L 整除,便得到一般版本的唯一性。实际计算时不必先分解全部模数:维护已合并的 (A,M),逐条执行前面的二式归并即可;充分性证明保证两两相容的输入不会在中途出现矛盾。

例子与边界

从一个同余式代入另一个 ​

求解

x≡1(mod4),x≡2(mod9).

设 x=1+4k,则 4k≡1(mod9);因为 4−1≡7(mod9),得 k≡7(mod9),于是

x≡29(mod36).

回代检查:29=4⋅7+1=9⋅3+2,两个余数都正确。全部整数解为 29+36t,其中 t∈Z。

模数共享因子时,余数也要相容 ​

共同因子记录了两条条件重叠的信息,它们在这部分必须给出相同答案。

例如 x≡1(mod4) 与 x≡3(mod6) 都要求 x 为奇数,因此相容。把 x=1+4k 代入第二式,得到 4k≡2(mod6),即 2k≡1(mod3),所以 k≡2(mod3),最终 x≡9(mod12)。相反,x≡0(mod2) 与 x≡1(mod4) 分别要求偶数与奇数,因而无解。

“两两互素”要求每一对模数的最大公因数都为 1。例如 6,10,15 的共同最大公因数为 1,但每一对仍共享一个素因子;这时应使用上述兼容性判据和最小公倍数。

三条相容条件与一张矛盾证书 ​

继续求

x≡1(mod4),x≡3(mod6),x≡5(mod8).

前两条合并为 x≡9(mod12)。第三条与它的公因数为 4,而 5−9=−4 可被 4 整除。由 12−8=4,取归并公式中的 u=1,得到

x0=9+12⋅1⋅5−94=−3,L=12⋅84=24.

故全部解为 x≡21(mod24)。逐条验算,21 除以 4,6,8 的余数确实为 1,3,5。周期是 24;模数乘积 192 会把同一个解族拆成八个余类,不能再声称模乘积唯一。

若只把第三条改为 x≡4(mod8),便不必继续计算。第一条要求 x≡1(mod4),第三条却要求 x≡0(mod4);等价地,gcd(4,8)=4 不整除余数差 4−1=3。这一对冲突条件就是无解的证书。

推论与应用

计算模 N 的和或积时,可以分别在较小的模数 ni 下计算,再用 CRT 恢复结果。各坐标能够并行处理,这正是多精度运算和 RSA 私钥运算加速中使用它的原因。同余方程计数也由此转化为各坐标解数的乘积。

互素整数版本是环的中国剩余定理的特例:这里的互素条件由最大公因数判定,在一般交换环中则改为理想之和等于整个环。若模数不互素,任意余数组合都可拼接的结论已不适用,还需用前面的 Bézout 归并或素数幂论证建立相容性判据。将整数模数换成互素多项式后,同样的拼接思路还可用于插值和模多项式计算。

拼接还解释了合数模平方根为何可能多于两个。求 x2≡1(mod15),等价于分别求模 3、模 5 的平方根。每边都有 1,−1 两种选择,CRT 把四种符号组合分别还原为 1,4,11,14;每个根都对应唯一一对局部符号。二次剩余中奇素数模下的“两个根”,正是在此被两个独立坐标组合成了四个根。

固定一个素数 p 并依次处理模 p,p2,… 时,问题变成无限相容精度,而非有限个互素坐标的自由拼接。p-adic 整数容纳所有这样的相容系统;每一层有整数代表,并不保证存在一个普通整数满足全部无限条件。

参考资料
  • Frank-Olaf Schreyer,Mathematics for Computer science,2020-01-27,Theorem 3.14:两模数的一般相容条件、Bézout 构造与最小公倍数周期。
  • Keith Conrad,The Chinese Remainder Theorem,§§1–3:两两互素模数的构造;§4:多项式同余的分量求解。本文有限多个非互素模数的充分性由上述素数幂论证补齐。
  • Kenneth Ireland and Michael Rosen, A Classical Introduction to Modern Number Theory, 2nd ed., Springer, 1990,Ch. 2, Chinese remainder theorem。
  • Ivan Niven, Herbert S. Zuckerman, and Hugh L. Montgomery, An Introduction to the Theory of Numbers, 5th ed., Wiley, 1991,Ch. 2, simultaneous congruences。
关系图谱13 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系