1. 定理表述
设 m1,m2,…,mk 是 两两互素 的正整数,即 gcd(mi,mj)=1 (i=j)。
则同余方程组:
⎩⎨⎧x≡b1(modm1)x≡b2(modm2)⋮x≡bk(modmk)
在模 m=m1m2…mk 意义下有 唯一解。
特殊情况:
- 若 mi 不互素:将 mi 分解为互素的素数幂次,如
12 = 4*3
- 若 x 前有系数,需要先用乘法逆元将系数去掉
- 最后的 mi 必须是互素的,需要删去条件较弱的等式JHJK 2. 构造性通解公式 方程组的解为: x≡∑i=1kMiMi−1bi(modm) 其中: * m=∏j=1kmj * Mi=mim (即除去 mi 外所有模数的乘积) * Mi−1 是 Mi 模 mi 的 逆元,满足 MiMi−1≡1(modmi)。
将同余式转换为同余式组求解:
- 根据同余的基本性质,如果 m=m1m2…mk 且 gcd(mi,mj)=1,则同余式 x≡a(modm) 等价于以下同余式组:
⎩⎨⎧x≡a(modp1e1)x≡a(modp2e2)…x≡a(modpkek)
3. 标准求解步骤 (Algorithm)
- 计算总模数:m=m1×m2×⋯×mk。
- 计算分量参数:对于每一个方程 i:
- 计算 Mi=m/mi。
- 利用 扩展欧几里得算法 计算 yi 使得 Miyi≡1(modmi),这里 yi 即为公式中的 Mi−1。
- 加权求和:计算 X=∑(Mi⋅yi⋅bi)。
- 取模规范化:x=Xmodm。
其他解法-代入合并:
依次把同余式翻译成**等式,然后像解普通方程组(比如 y=2x+1 代入 z=y+3)一样去解它。
第一步:翻译(同余 → 等式)**
当我们说 x≡2(mod3) 时,数学上的意思是:
“x 除以 3 余 2”。
把它翻译成等式就是:x 等于 3 的某个倍数加上 2。
写出来就是:
x=3k+2
(这里 k 是一个未知的整数)
第二步:代入(核心操作)
现在我们有了 x 的具体表达式(3k+2),我们把它代入到第二个条件里去看看。
假设第二个条件是 x≡3(mod5)。
把 x 换掉:
(3k+2)≡3(mod5)
第三步:求解未知数 k
现在任务变了:我们要找到 k 是多少。
-
移项(把 2 减过去):
3k≡1(mod5)
-
解这个关于 k 的方程(求逆元):
3 模 5 的逆元是 2(因为 2×3=6≡1)。
所以:
k≡1×2=2(mod5)
翻译回等式:k=5t+2
第四步:回带(合并完成)
把算出来的 k(5t+2)带回第一步 x 的表达式里:
x=3×(5t+2)+2
x=15t+6+2
x=15t+8
4. 经典例题
题目:解同余方程组
⎩⎨⎧x≡1(mod5)x≡5(mod6)x≡4(mod7)x≡10(mod11)
解:
- 总模数:m=5×6×7×11=2310。
- 分量计算:
- i=1: m1=5,b1=1。M1=2310/5=462。求 462(mod5) 的逆元。
462≡2(mod5),即求 2y≡1(mod5)⟹y1=3。
- i=2: m2=6,b2=5。M2=2310/6=385。
385≡1(mod6),即求 1y≡1(mod6)⟹y2=1。
- i=3: m3=7,b3=4。M3=2310/7=330。
330≡1(mod7)⟹y3=1。
- i=4: m4=11,b4=10。M4=2310/11=210。
210≡1(mod11)⟹y4=1。
- 求和:
xxx≡462×3×1+385×1×5+330×1×4+210×1×10≡1386+1925+1320+2100≡6731(mod2310)
- 结果:
x≡6731mod2310=2111。
5. 理论应用
当 m1,…,mk 两两互素时,大模数同余式 a≡b(modm1…mk) 等价于同余方程组:
⎩⎨⎧a≡b(modm1)⋮a≡b(modmk)
这允许我们将大数运算分解为多个小数运算,提高计算效率(如 RSA 解密中的优化)。