中国剩余定理(转)

中国剩余定理

扩展的欧几里得算法 <---  线性同余方程 <---线性同余方程组(剩余定理)

对于同余方程组:

x=a1 (mod m1); 1

x=a2 (mod m2); 2

方程组有一个小于m(m1,m2的最小公倍数)的非负整数解的充分必要条件是(a1-a2)%(m1,m2)==0 ,同样利用扩展欧几里德算法。

两式联立:a1+m1*y=a2+m2*z。

则:a1-a2=m2*z-m1*y; 这样就可以了解出z和y,则:x=a2+m2*z;

现在我们将其推广到一般情形:(设m1,m2,···,mk两两互素)

x=a1(mod m1);

x=a2(mod m2);

···

x=ak(mod mk);其在M=m1*m2*···*mk;中有唯一整数解。

记Mi=M/mi;因为(Mi,mi)=1,故有两整数pi,qi满足Mi*pi+mi*qi=1,如果记ei=Mi*pi;

那么:ei=0 (mod mj),j!=i; ei=1(mod mj),j=i;

很明显,e1*a1+e2*a2+···+ek*ak就是方程的一个解,加减M倍后就可以得到最小非负整数解了。

如果m1,m2,···,mk不互素,那只能两个两个求了。

x=a1 (mod m1);

x=a2 (mod m2);

解完后,a=x; m=m1和m2的最小公倍数。即可。

你可能感兴趣的:(算法,扩展)