版权归原作者所有,如有侵权,请联系我们

[科普中国]-韩信点兵的奥秘:中国剩余定理

科普中国-绿色双碳
原创
聚焦绿色低碳技术理念 科普助力“双碳”目标实现
收藏

韩信是中国古代一位有名的军事家,民间流传着许多他的故事,韩信点兵便是其中之一。

秦朝末年,楚汉相争。一次,韩信率1500名将士与楚王大将李锋交战。苦战一场,楚军不敌,败退回营,于是,韩信整顿兵马也返回大本营。当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀声震天。汉军本来已十分疲惫,这时队伍大哗,韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。

韩信命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:“我军有1073名勇士,敌人不足五百,我们居高临下,以众击寡,一定能打败敌人。”一时间旌旗摇动,鼓声喧天,汉军步步逼近,楚军乱作一团。交战不久,楚军大败而逃。

部将好奇地问韩信:“大帅是如何迅速地算出我军人马的呢?”韩信说:“根据编队时排尾的余数算出来的。”

韩信到底是怎么算出来的呢?

这也是中国古代的一道趣味算术题。有一首四句诗隐含了解题的思路:

“三人同行七十稀,五树梅花廿一枝。

七子团圆正半月,除百零五便得知。”

诗里让人记住这几个数字:3与70,5与21,7与15,还有105(也就是3、5、7的公倍数)。这些数是什么意思呢?题中3人一列多2人,用2×70;5人一列多3名,用3×21;7人一列多2人,用2×15,三个乘积相加:

2×70+3×21+2×15=233

用233除以3余2,除以5余3,除以7余1,符合题中条件。但是,因为105是3、5、7的公倍数,所以233加上或减去若干个105仍符合条件。这样一来,128、338、443、548、653……都符合条件。总之,233加上或减去105的整数倍,都可能是答案。韩信根据现场观察,得出了1073这个数字。

诗歌里的数字又是怎么得来的呢?

70是5和7的公倍数,除以3余1;

21是3和7的公倍数,除以5余1;

15是3和5的公倍数,除以7余1。

《孙子算经》也有类似的问题:“今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?”

答曰:“二十三。”

术曰:“三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得。”

什么意思呢?用现代语言说明这个解法就是:

首先找出能被5与7整除而被3除余1的数70,被3与7整除而被5除余1的数21,被3与5整除而被7除余1的数15。如果所求的数被3除余2,那么就取数70×2=140,140是被5与7整除而被3除余2的数。如果所求数被5除余3,那么取数21×3=63,63是被3与7整除而被5除余3的数。如果所求数被7除余2,那就取数15×2=30,30是被3与5整除而被7除余2的数。

140+63+30=233,由于63与30都能被3整除,所以233与140这两数被3除的余数相同,都是余2,同理233与63这两数被5除的余数相同,都是3,233与30被7除的余数相同,都是2。所以233是满足题目要求的一个数。105是3、5、7的公倍数,前面说过,凡是满足233加减105的整数倍的数都是符合题意的,因此依定理译成算式解为:

70×2+21×3+15×2=233

233-105×2=23

这就是有名的“中国剩余定理”,或称“孙子定理”,和韩信点兵是一个道理。

本作品为“科普中国-科学原理一点通”原创,转载时务请注明出处。

内容资源由项目单位提供