中国剩余定理
中国剩余定理,又称孙子定理,数论中的重要定理,中国古代用于求解一次同余组的方法。问题的原文出自<孙子算经>,描述如下:
"有物不知其数,三个一数余二,五个一数余三,七个一数又余二,问该物总数几何?"
意思是有一个数X,除以3余2,除以5余3,除以7余2,求该数X,当然,<孙子算经>也给出了解题的方法:
"三三数之,取数七十,与余数二相乘;五五数之,取数二十一,与余数三相乘;七七数之,取数十五,与余数二相乘。将诸乘积相加,然后减去一百零五的倍数。"
按照上面的思路,我们分别取数70,21,15,并分别乘上相应的值,得公式X=70*2+21*3+15*2-105*k.这里k为任意整数,假设k=1,根据该公式计算得X=140+63+30-105=128.
带到问题验证下:128%3=2 , 128%5=3, 128%7=2. k=2时,解得X=23,可以验证同样符合题意。
那么我们关心的是,这组简单的公式如何得到?
这里有三个关键数70,21,15,可以简单使用公式描述他们的性质:
70%3=1,70%5=0,70%7=0;
21%3=0,21%5=1,21%7=0;
15%3=0,15%5=0,15%7=1;
我们发现它们的性质很简单,但也有趣,它们分别对3,5,7也就是我们的除数mod(取余)余1,对其他数都能够被整除。同时,我们对70,21,15这三个数乘上2,3,2,是因为数X
对3,5,7的余数分别为2,3,2. 如70,其实是要找余2的,但只要找到了余1的再乘2即余2了,最后的105代表3,5,7的最小公倍数,即105=3*5*7.
总之,孙子问题的解法,是找出三个关键数70,21,15。解法的意思就是用70乘(3除所得的余数),21乘(5除所得的余数),15乘(7除所得的余数),然后总加起来,减去105的倍数就是答案。
简单解释
假设任意三个数a,b,c,数X对他们的余数分别为m1,m2,m3,分别找出能被两个数整除,而满足被第三个整数整除余1的最小数。即
k1%a=1,k1%b=0,k1%c=0
k2%a=0,k2%b=1,k2%c=0
k3%a=0,k3%b=0,k3%c=1
这里,令T1,T2,T3分别为:
T1=k1*m1;(满足T1%a=m1,T1%b=T1%c=0)
T2=k2*m2;(满足T2%b=m1,T2%a=T2%c=0)
T3=k3*m3;(满足T3%c=m3,T3%a=T3%b=0)
设T‘ = T1+T2+T3 ,则T’显然能够满足题目,又Q=a*b*c能同时整除a,b,c,固X=T‘+tQ(t为任意整数)满足题目要求的解。
定理的通用形式:
用现代数学语言来说明的话,中国剩余定理可以描述为下面的一次线性同余方程组:
中国剩余定理说明:假设m1,m2,....mn两两互质,对任意的整数a1,a2,a3.....an,方程(S)有解,并且通解可以用如下方式构造得到:
1.(m1,m2...mn的乘积),