1、秦王暗点兵秦王暗点兵问题和韩信乱点兵问题,都是后人对物不知其数问题的一种故事化。物不知其数问题出自一千六百年前我国古代数学名著孙子算经。原题为:“今有物不知其数,三三数之 二,五五数之 三,七七数之 二,问物几何?“这道题的意思是:有一批物品,不知道有几件。如果三件三件地数,就会剩下两件;如果五件五件地数,就会剩下三件;如果七件七件地数,也会剩下两件。问:这批物品共有多少件?变成一个纯粹的数学问题就是:有一个数,用 3 除余 2,用 5 除余 3,用 7除余 2。求这个数。这个问题很简单:用 3 除余 2,用 7 除也余 2,所以用 3 与 7 的最小公倍数21 除也余 2,而用 21 除余
2、2 的数我们首先就会想到 23;23 恰好被 5 除余 3,所以 23 就是本题的一个答案。这个问题之所以简单,是由于有被 3 除和被 7 除余数相同这个特殊性。如果没有这个特殊性,问题就不那么简单了,也更有趣儿得多。我们换一个例子;韩信点一队士兵的人数,三人一组余两人,五人一组余三人,七人一组余四人。问:这队士兵至少有多少人?这个题目是要求出一个正数,使之用 3 除余 2,用 5 除余 3,用 7 除余 4,而且希望所求出的数尽可能地小。如果一位同学从来没有接触过这类问题,也能利用试验加分析的办法一步一步地增加条件推出答案。例如我们从用 3 除余 2 这个条件开始。满足这个条件的数是 3n+
3、2,其中 n是非负整数。要使 3n+2 还能满足用 5 除余 3 的条件,可以把 n 分别用 1,2,3,代入来试。当 n=1 时,3n+2=5,5 除以 5 不用余 3,不合题意;当 n=2 时,3n+2=8,8 除以 5 正好余 3,可见 8 这个数同时满足用 3 除余 2 和用 5 除余 3 这两个条件。最后一个条件是用 7 除余 4。8 不满足这个条件。我们要在 8 的基础上得到一个数,使之同时满足三个条件。为此,我们想到,可以使新数等于 8 与 3 和 5 的一个倍数的和。因为 8 加上3 与 5 的任何整数倍所得之和除以 3 仍然余 2,除以 5 仍然余 3。于是我们让新数为 8+
4、15m,分别把 m=1,2,代进去试验。当试到 m=3 时,得到 8+15 m=53,53 除以 7 恰好余 4,因而 53 合乎题目要求。我国古代学者早就研究过这个问题。例如我国明朝数学家程大位在他著的算法统宗(1593 年)中就用四句很通俗的口诀暗示了此题的解法:三人同行七十稀,五树梅花甘一枝,七子团圆正半月,除百零五便得知。“正半月“暗指 15。“除百零五“的原意是,当所得的数比 105 大时,就 105、105地往下减,使之小于 105;这相当于用 105 去除,求出余数。这四句口诀暗示的意思是:当除数分别是 3、5、7 时,用 70 乘以用 3 除的余数,用 21 乘以用 5 除的余
5、数,用 15 乘以用 7 除的余数,然后把这三个乘积相加。加得的结果如果比 105 大,就除以 105,所得的余数就是满足题目要求的最小正整数解。按这四句口诀暗示的方法计算韩信点的这队士兵的人数可得:702+213+154=263,263=2105+53,所以,这队士兵至少有 53 人。在这种方法里,我们看到:70、21、15 这三个数很重要,稍加研究,可以发现它们的特点是:70 是 5 与 7 的倍数,而用 3 除余 1;21 是 3 与 7 的倍数,而用 5 除余 1;15 是 3 与 5 的倍数,而用 7 除余 1。因而702 是 5 与 7 的倍数,用 3 除余 2;213 是 3 与
6、 7 的倍数,用 5 除余 3;154 是 3 与 5 的倍数,用 7 除余 4。如果一个数以 a 余数为 b,那么给这个数加上 a 的一个倍数以后再除以 a,余数仍然是 b。所以,把 702、213 与 154 都加起来所得的结果能同时满足“3 除余 2、用 5 除余 3、用 7 除余 4“的要求。一般地,70m+21n+15k (1m3, 1n5,1k7)能同时满足“用 3 除余 m 、用 5 除余 n 、用 7 除余 k “的要求。除以 105 取余数,是为了求合乎题意的最小正整数解。我们已经知道了 70、21、15 这三个数的性质和用处,那么,是怎么把它们找到的呢?要是换了一个题目,三
7、个除数不再是 3、5、7,应该怎样去求出类似的有用的数呢?为了求出是 5 与 7 的倍数而用 3 除余 1 的数,我们看看 5 与 7 的最小公倍数是否合乎要求。5 与 7 的最小公倍数是 57=35,35 除以 3 余 2,35 的 2 倍除以 3 余 2,35 的 2 倍除以 3 就能余 1 了,于是我们得到了“三人同行七十稀“。为了求出是 3 与 7 的倍数而用 5 除余 1 的数,我们看看 3 与 7 的最小公倍数是否合乎要求。3 与 7 的最小公倍数是 37=21,21 除以 5 恰好余 1,于是我们得到了“五树梅花甘一枝“。为了求出是 3 与 5 的倍数而用 7 除余 1 的数,我
8、们看看 3 与 5 的最小公倍数是否合乎要求。3 与 5 的最小公倍数是 35=15,15 除以 7 恰好余 1,因而我们得到了“七子团圆正半月“。3、5、7 的最小公倍数是 105,所以“除百零五便得知“。依照上面的思路,我们可以举一反三。例如:试求一数,使之用 4 除余 3,用 5 除余 2,用 7 除余 5。解 我们先求是 5 与 7 的倍数而用 4 除余 1 的数;5 与 7 的最小公倍数是57=35,35 除以 4 余 3,33 除以 4 余 1,因而 353=105 除以 4 余 1,105是 5 与 7 的倍数而用 4 除余 1 的数。我们再求 4 与 7 的倍数而用 5 除余
9、1 的数;4 与 7 的最小公倍数是47=28,28 除以 5 余 3,37 除以 5 余 1,因而 287=196 除余 5 余 1,所以196 是 4 与 7 的倍数而用 5 除余 1 的数。最后求是 4 与 5 的倍数而用 7 除余 1 的数:4 与 5 的最小公倍数是45=20,20 除以 7 余 6,66 除以 7 余 1,因而 206=120 除以 7 余 1,所以120 是 4 与 5 的倍数而用 7 除余 1 的数。利用 105、196、120 这三个数可以求出符合题目要求的解:1053+1962+1205=1307。由于 4、5、7 的最小公倍数是 457=140,1307
10、大于 140,所以 1307 不是合乎题目要求的最小的解。用 1037 除以 140 得到的余数是 47,47 是合乎题目的最小的正整数解。一般地,105m+196n+120k (1m4,1n5,1k7)是用 4 除余 m,用 5 除余 n,用 7 除余 k 的数;( 105m+196n+120k)除以 140 所得的余数是满足上面三个条件的最小的正数。上面我们是为了写出 105m+196n+120k 这个一般表达式才求出了 105 这个特征数。如果只是为了解答我们这个具体的例题,由于 57=35 既是 5 与 7 的倍数除以 4 又余 3,就不必求出 105 再乘以 3 了。35+1962+1205=1027就是符合题意的数。1027=7140+47,由此也可以得出符合题意的最小正整数解 47。算法统宗中把在以 3、5、7 为除数的“物不知其数“问题中起重要作用的70、21、15 这几个特征数用几句口诀表达出来了,我们也可以把在以 4、5、7为除数的问题中起重要作用的 105、196、120 这几个特征数编为口诀。留给读者自己去编吧。凡是三个除数两两互质的情况,都可以用上面的方法求解。上面的方法所依据的理论,在中国称之为孙子定理,国外的书籍称之为中国剩余定理。