附录11 - 中国剩余定理
『中国剩余定理(Chinese Remainder Theorem,简称 CRT)』 是数论中最基础、也最优美的定理之一。
「附录10」中在欧拉函数积性证明中用到的那个“完美的一一对应(双射)”,其实就是中国剩余定理在两个模数下的直接应用!
它不仅在纯数学中有核心地位,在现代密码学(比如 RSA 加密算法)和计算机科学中也是不可或缺的基石。
一、 历史起源:“韩信点兵”与“物不知数”
这套理论最早出现在中国古代数学著作《孙子算经》(大约公元 4 到 5 世纪)中,原文有一道非常著名的谜题:
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?”
翻译成现代语言就是:有一个未知的整数 x,除以 3 余 2,除以 5 余 3,除以 7 余 2。求 x 是多少?
古人为了解决这类问题,总结出了一套被称为“大衍求一术”的算法,这正是中国剩余定理的雏形。后来,西方数学家高斯在其著作《算术研究》中给出了严格的代数表述。
二、 现代代数表述(严谨定义)
中国剩余定理解决的是一元线性同余方程组的求解问题。
假设有 k 个正整数 m1,m2,…,mk,它们两两互素(即任意两个数的最大公约数都是 1,gcd(mi,mj)=1)。
给定任意 k 个整数 a1,a2,…,ak。
中国剩余定理断言:以下同余方程组必定存在解,并且在模 M=m1m2…mk 的意义下,解是唯一的:
x≡a1(modm1)
x≡a2(modm2)
⋮
x≡ak(modmk)
这意味着,在 1 到 M 的范围内,有且仅有一个 x 能够同时满足上述所有的余数条件。
三、 构造性证明(如何求出 x?)
中国剩余定理不仅告诉你“解存在”,还直接给出了像拼积木一样构造出这个解的算法。
第一步:计算总乘积
令 M=m1m2…mk。
第二步:计算基础“积木”
对于每一个 i(从 1 到 k),定义 Mi=miM。
(也就是说,Mi 是除了 mi 以外,其他所有模数的乘积)。
显然,Mi 能够被其他所有模数整除,所以 Mi≡0(modmj)(当 j=i 时)。
第三步:求逆元(裴蜀定理的登场)
因为 m1,…,mk 两两互素,所以 Mi 和 mi 也是互素的。
根据裴蜀定理,必定存在一个整数 ti,使得:
Miti≡1(modmi)
这个 ti 被称为 Mi 在模 mi 下的乘法逆元。
第四步:组合出最终答案
我们将所有的部件组合起来,最终的解 x 的通式为:
x=∑i=1kaiMiti
为什么这个式子是对的?
我们随便挑一个模数 m1 来检验:
- 当 i=1 时,那一项是 a1M1t1。因为 M1t1≡1(modm1),所以这一项模 m1 的结果就是 a1⋅1=a1。
- 当 i=1(比如 i=2,3…)时,那一项是 aiMiti。因为 Mi 里面包含了因子 m1,所以 Mi≡0(modm1),这一整项模 m1 的结果就是 0。
- 所有的项加起来模 m1,结果恰好就是 a1+0+0⋯=a1。
这完美满足了方程组的要求!
第五步:证明唯一性
第四步中我们证明了任何一组 a1,a2,⋯,ak 组合都能找到一个 x∈{1,⋯,M}
这样的 ai 的组合一共有 M 个,而 x 可取的范围也只有 M 个数,根据抽屉原理,不可能有两个不同 xi,xj 对应同一组ai,这就证明了解的唯一性。
四、 应用于欧拉函数积性证明
回顾「附录10」中证明欧拉函数积性的方法二中用的构造方法:
寻找整数 u,v,使得
mu+nv=1
x=(a⋅nv+b⋅mu)modmn
这里,我们要求 x≡a(modm) 且 x≡b(modn)。
对应到上面的构造法:
m1=m,m2=n,
M1=n,M2=m,
n 在模 m 下的逆元是 v,m 在模 n 下的逆元是 u(这正是裴蜀定理 mu+nv=1 的直接推论)。
所以我们构造出的
x=a⋅n⋅v+b⋅m⋅u
这完全就是中国剩余定理在 k=2 时的标准构造公式!