参考:
中国剩余定理:
http://itdocument.com/7701006441/
http://www.cppblog.com/qywyh/archive/2007/08/27/30943.aspx
扩展欧几里得算法:
http://blog.youkuaiyun.com/dafang_xu/article/details/50186653
中国剩余定理介绍
在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3 余2),
五五数之剩三(除以5 余3),七七数之剩二(除以7 余2),问物几何?”这个问题称为“孙
子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:
找出三个数:从3 和5 的公倍数中找出被7 除余1 的最小数15,从3 和7 的公倍数中找出被
5 除余1 的最小数21,最后从5 和7 的公倍数中找出除3 余1 的最小数70。
用15 乘以2(2 为最终结果除以7 的余数),用21 乘以3(3 为最终结果除以5 的余数),同
理,用70 乘以2(2 为最终结果除以3 的余数),然后把三个乘积相加(15*2+21*3+70*2)得
到和233。
用 233 除以 3,5,7 三个数的最小公倍数 105,得到余数 23,即 233%105=23。这个余数 23
就是符合条件的最小数。
就这么简单。我们在感叹神奇的同时不禁想知道古人是如何想到这个方法的,有什么基
本的数学依据吗?
中国剩余定理分析
我们将“孙子问题”拆分成几个简单的小问题,从零开始,试图揣测古人是如何推导出
这个解法的。
首先,我们假设n1 是满足除以3 余2 的一个数,比如2,5,8 等等,也就是满足3*k+2
(k>=0)的一个任意数。同样,我们假设 n2 是满足除以 5 余 3 的一个数,n3 是满足除以 7
余2 的一个数。
有了前面的假设,我们先从n1这个角度出发,已知n1满足除以3余2,能不能使得 n1+n2
的和仍然满足除以3 余2?进而使得n1+n2+n3 的和仍然满足除以3