扩展中国剩余定理(EXCRT)
Published on | 7/29/2025 |
Created on | 12/17/2021 |
扩展中国剩余定理(EXCRT,Extended Chinese remainder theorem)用于求解如下形式的一元线性同余方程组:
⎩⎨⎧xxxx≡a1≡a2≡a3⋮≡an(mod m1)(mod m2)(mod m3)(mod mn)
不同于普通中国剩余定理,扩展版本中不要求 m1,m2,…,mn 两两互质。
推导
我们先来考虑两个方程的情况:
{xx≡a1≡a2(mod m1)(mod m2)
把同余式写成不定方程的形式:
m1p+a1=x=m2q+a2(p,q∈Z)
移项,使其变为关于 p 和 q 的丢番图方程的形式:
m1p−m2q=a2−a1
接着就可以套用[[EXCRT]]中解这种不定方程的方法,根据[[裴蜀定理]],若 gcd(m1,m2)∤a2−a1 则无解,其余情况下,我们可以解出一组 (p,q) ,使 p 为最小非负整数值,这时 x=m1p+a1 就为该方程组的最小非负整数解,注意到给 x 加上任意数量的 lcm(m1,m2) 方程依然满足,所以可以把方程组的解写为:
x≡m1p+a1(mod lcm(m1,m2))
把刚刚的方法看作“合并了两个同余式”,则对于多个方程的方程组,我们按照这样两两合并就可以了。
因此我们能归纳出以下的算法:
- 对于 1 到 n−1 的第 i 条方程,执行:
- 应用EXGCD求解 mip−mi+1q=ai+1−ai ,若无解则同余方程组无解,否则求出满足方程的最小非负整数 p
- 修改第 i+1 条同余方程:
- ai+1←mip+ai
- mi+1←lcm(mi,mi+1)
- 最后的 p 即为答案