韩信点兵的奥秘:中国剩余定理
2018-05-14
韩信是中国古代一位有名的军事家,民间流传着许多他的故事,韩信点兵便是其中最为耳熟能详的故事之一。韩信点兵的背后蕴含着怎样的奥秘?中国剩余定理对现代又有何启示?
韩信点兵的奥秘
秦朝末年,楚汉相争。一次,韩信率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
这就是有名的“中国剩余定理”,或称“孙子定理”,和韩信点兵是一个道理。
《孙子算经》的“物不知其数”题虽然开创了一次同余式研究的先河,但真正从完整的计算程序和理论上解决这个问题的是南宋数学家秦九韶,他在他的《数学九章》中提出了一个数学方法,称之为“大衍求一术”。“大衍求一术”不仅在当时处于世界领先地位,在近代数学和现代电子计算设计中,也起到了重要作用,被称为“中国剩余定理”。
在小学课本中,往往会看到这样的题目:有一个年级的同学,每9人一排多5人,每7人一排多1人,每5人一排多2人,问这个年级至少有多少人?求解的方法就是“剩余定理”。
(新华网2018.8.7等)