定义
中国剩余定理(Chinese Remainder Theorem, CRT)可求解如下形式的一元线性同余方程组(其中 (w_1,w_2,w_3……w_n) 两两互质):
[egin{cases}
xequiv b_1 (mod w_1) \x equiv b_2 (mod w_2)\x equiv b_3 (mod w_3)\x equiv b_4 (mod w_4)
\ ……
\x equiv b_n (mod w_n)
end{cases}]
然而这个东西相对于同样可以解决这个问题的(excrt) 有着很大的限制,所以在这里并不做过多说明
应用
还是上面的方程组,求满足这个方程组的最小非负整数解 (x)
假设(M=prod_{i=1}^{k-1} lcm(w_i,M))
首先我们已经假设求出了前 (k-1) 个方程的解 (x_0) ,那么前 (k-1) 个方程的通解即为
[x_0+i imes M (iin Z)
]
那么现在引入第 (k) 个方程
那么也就是找出一个正整数 (t) 使得
[x_0+t imes Mequiv b_i (mod w_k)
]
成立
移项可以得到
[t imes Mequiv b_i-x_0 (mod w_k)
]
那么这个方程可以用扩欧求得解 (t)
此时的答案 (x) 即为 $x_0+t imes M $
实现
注:该实现仅代表本人的一点见解,由于初学,知识浅薄,仅能理解到表面,如有差错请指出
首先可以把(M=m_1,x=b_1)用第一个方程作为基层来一步步求得后面的方程
当我们通过扩欧求得的 (t) 的时候,此时我们是求得的方程原型为
[t imes M+y imes w_k=gcd(M,w_k)
]
要想进一步求得真正的 (t) 还要乘上 (c/gcd(M,w_k))才可以,并且此时的模数可以为 (b),应用龟速乘进行求解即可
然后更新(M=M imes w_k/gcd(M,w_k))
直到完成为止