在数学上,如果a和b除以正整数m后的余数相同,则称a、b对于模m同余,韩信点兵用数学公式来表示就是(X是未知的人数):
X ≡ 2 (mod 3)
X ≡ 3 (mod 5)
X ≡ 2 (mod 7)
为了简化问题,我们先只考虑前两个同余条件,满足除以3余2、除以5余3的整数分别为:
2、5、8、11、14、17、20、23、26……
3、8、13、18、23、28、33、38……
可以看出,同时符合这两个条件的靠前个数是8,第二个数是23。后面的每个解与前一个之差都应该是3和5的最小公倍数15,即:
X = 8 + 15K (K是整数)
这样我们就把寻找的整数解缩小了,接着再加入第三个条件,找到分别满足X=8+15K和除以7余2的数:
8、23、38、53、68、83、98、113、128……
2、9、16、23、30、37、44、51……
满足条件的靠前个数是23,第二个数是128。后面的每个解与前一个之差都应该是3、5、7的最小公倍数105。
这样寻找解的过程显然太繁琐。后来,明朝数学家程大位把求解方法编成了一首诗:
三人同行七十稀,五树梅花廿一枝。
七子团圆正半月,除百零五便得知。
意思是:
将除以3得到的余数乘以70,将除以5得到的余数乘以21,将除以7得到的余数乘以15,全部加起来后再减去105或者105的整数倍,得到的数就是答案。
70 × 2 + 21 × 3 + 15 × 2 = 233 - 2 × 105 = 23
其他的解只能和23相差105的整数倍,韩信应该是估计出军队大致人数,取了105×10+23=1073这个解。
韩信点兵的计算公式是:n=2×70+3×21+2x15-105k。
这个公式的含义是:假设一个数为X,则1000<X<1100(战死四五百),并且X满足以下等式:X%3=2,X%5=4,X%7=6,让求X。其中2×70表示2个70的倍数,3×21表示3个21的倍数,2×15表示2个15的倍数,-105k表示减去105的倍数,k为剩余士兵数量。