一般我们求的同余方程组mod 的数是两两互素的,可以直接用孙子定理(中国剩余定理)求解。
然而本题mod的数可能不是互素,所以要转换一下再求。
x=b1(mod a1); 1)
x=b2(mod a2); 2)
a1*x1+b1=x=b2(mod a2)
所以a1*x1+b1=b2(mod a2)
a1*x1=(b2-b1)(mod a2)
我们知道形如AX=B(mod p)的同余式可用扩张欧几里德算法求出一个最小的一个X。所以容易求出x1的值,代入1)式,得出x.
接着这一步很关键的是将该两个方程合并成一个方程为
x'==x(mod LCU(a1,a2) );
然后用该方程与接下来的一个联立,依次求解即可得出结果。