"""
中国剩余定理(用到了扩展欧几里得算法求逆元):设自然数m1, m2, m3 ... mn两两互质, 并记N = m1 * m2 * m3 ... mn, 则同余方程组:
x ≡ b1(mod m1)
x ≡ b2(mod m2)
...
x ≡ bn(mod mn)
有唯一解x=sum(xi * bi) % N (1 <= i <= n)
求解过程:
1.令上述同余方程组中某个等式中的余数b=1, 其余等式的余数等于0, 形成一个新的同余方程组:
x1 ≡ 0(mod m1)
x1 ≡ 0(mod m2)
...
x1 ≡ 1(mod mi) (1 <= i <= n)
...
x1 ≡ 0(mod mn)
求出该同余方程组的解x1:
根据其中n-1个等式xi ≡ 0(mod mz) (z != i)
可以知道: x1是N // mi的倍数, 令Mi = N // mi, 则令x1 = Mi * t, 那么求方程组的解就可以转
换为求x1 ≡ 1(mod mi) (1 <= i <= n)等式的解, 相当于求x1 + mi * k = 1的解, 再进行转换为:
Mi * t + mi * k = 1, 也就是求Mi模mi意义下的逆元t, 逆元可以用扩展欧几里得算法求得, Mi已知,
t也求得, 那么该同余方程组的解x1 = Mi * t
2.重复上述1的操作, 求出n个同余方程组的解x1~xn
3.最后就可以得到原同余方程组的解x=sum(xi * bi) % N (1 <= i <= n)
注意: 中国剩余定理要求除数mi两两两互质, 即gcd(mi, mj)=1(i!=j, 1<=i, j,=n), 比如3个等式的除数为3, 8, 4时:
(3, 8), (3, 4)都互质, 但是(8, 4)不互质不满足剩余定理的条件
"""
数论-中国剩余定理
于 2024-03-27 12:48:05 首次发布