韩信点兵数学故事( 四 )


首先使用单因子构件凑成法 , 我们作两个方面的简化:一方面是每次只考虑"一个除式"有余数的情况(即另两个除式都是整除的情况);另一方面是把余数都简化为最简单的1 。这样得到三组方程:
1 x=3a+1,x=5b,x=7c,
2 y=3a,y=5b+1,y=7c,
3 z=3a,z=5b,z=7c+1, (a、b、c为正整数) , 
①式意味着 , 在5和7的公倍数中(35 , 70 , 105 , …)寻找被3除余1的数;②式意味着 , 在3和7的公倍数中(21 , 42 , 63 , …)寻找被5除余1的数;③式意味着 , 在3和5的公倍数中(15 , 30 , 45 , …)寻找被7除余1的数 。对①式而言 , 这个数可以取70 , 对②式而言 , 这个数可以取21 , 对③式而言 , 这个数可以取15 。于是①式两边同减70变为这样:第二式右边仍是5的倍数 , 第三式右边仍是7的倍数 , 而第一式右边因为减的70是"用3除余1"的数 , 正好原来也多一个1 , 减没了;第一式右边也成为了倍数 , 是3的倍数 。由①得x-70=3( a-23),x-70=5(b-14),x-70=7(c-10);x-70= [3,5,7 ]k=105k,k为正整数 , x=105k1+70;由②式两边同减21变得y-21=3 ( a-7 ),y-21=5 ( b-4 ),y-21=7 ( c-3), y=105k2+21; ③式两边同减15变得z=105k3+15;现在重复一下:所得的x是被3除余1 , 被5和7除余0的数;y是被5除余1 , 被3和7除余0的数;z是被7除余1 , 被3和5除余0的数 。那么 , 凑出s=2x+3y+2z ,  s不就是我们需要求的数吗?
s=140+63+30+105 (2k1+3k2+2k3 )=233+105k;k=-2,-1,0,1,2,3….
这就是《孙子算经》中"物不知其数"一题的解 , 有无穷多解 , 最小的正整数解是23(k=-2 时) 。
所以 , 上述方法叫"单因子构件凑成法"解决"由几个平行条件表述的问题"的方法最大优点是可以任意改变余数加以推广:题:有物不知其数 , 三三数之剩a , 五五数之剩b , 七七数之剩c , 问物几何? 答:解为s=70a+21b+15c+105k,k为整数应该使s为正 。
【韩信点兵数学故事】要注意的是 , 前面的问题中 , 3 , 5 , 7是两两互素的 , 所以"三三数 , 五五数 , 七七数"得余数后可用此公式 。但"四四数 , 六六数 , 九九数"得余数后就不能用此公式 , 因为4、6、9并不是两两互素的 。
有趣的应用:某单位有100把锁 , 分别编号为1 , 2 , 3 , … , 100 。现在要对钥匙编号 , 使外单位的人看不懂 , 而本单位的人一看见锁的号码就知道该用哪一把钥匙 。
能采用的方法很多 , 其中一种就是利用中国剩余定理 , 把锁的号码被3 , 5 , 7去除所得的三个余数来作钥匙的号码(首位余数是0时 , 也不能省略) 。这样每把钥匙都有一个三位数编号 。例如23号锁的钥匙编号是232号 , 52号锁的钥匙编号是123号 。8号锁——231 19号锁——145 , 45号锁——003  , 52号锁——123 因为只有100把锁 , 不超过105 , 所以锁的号与钥匙的号是一一对应的 。如果希望保密性再强一点儿 , 则可以把刚才所说的钥匙编号加上一个固定的常数作为新的钥匙编号系统 。甚至可以每过一个月更换一次这个常数 。这样 , 仍不破坏锁的号与钥匙的号之间的一一对应 , 而外人则更难知道了 。

推荐阅读