【韩信点兵解法】韩信点兵解题原理_数学_秋色暮云丶
编辑: admin 2017-15-06
-
4
秦王暗点兵问题和韩信乱点兵问题,都是后人对物不知其数问题的一种故事化.
物不知其数问题出自一千六百年前我国古代数学名著《孙子算经》.原题为:"今有物不知其数,三三数之二,五五数之三,七七数之二,问物几何?"
这道题的意思是:有一批物品,不知道有几件.如果三件三件地数,就会剩下两件;如果五件五件地数,就会剩下三件;如果七件七件地数,也会剩下两件.问:这批物品共有多少件?
变成一个纯粹的数学问题就是:有一个数,用3除余2,用5除余3,用7除余2.求这个数.
这个问题很简单:用3除余2,用7除也余2,所以用3与7的最小公倍数21除也余2,而用21除余2的数我们首先就会想到23;23恰好被5除余3,所以23就是本题的一个答案.
这个问题之所以简单,是由于有被3除和被7除余数相同这个特殊性.如果没有这个特殊性,问题就不那么简单了,也更有趣得多.
我们换一个例子;韩信点一队士兵的人数,三人一组余两人,五人一组余三人,七人一组余四人.问:这队士兵至少有多少人?
这个题目是要求出一个正数,使之用3除余2,用5除余3,用7除余4,而且希望所求出的数尽可能地小.
如果一位同学从来没有接触过这类问题,也能利用试验加分析的办法一步一步地增加条件推出答案.
例如我们从用3除余2这个条件开始.满足这个条件的数是3n+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+15m,分别把m=1,2,…代进去试验.当试到m=3时,得到8+15m=53,53除以7恰好余4,因而53合乎题目要求.
我国古代学者早就研究过这个问题.例如我国明朝数学家程大位在他著的《算法统宗》(1593年)中就用四句很通俗的口诀暗示了此题的解法:
三人同行七十稀,
五树梅花甘一枝,
七子团圆正半月,
除百零五便得知.
"正半月"暗指15."除百零五"的原意是,当所得的数比105大时,就105、105地往下减,使之小于105;这相当于用105去除,求出余数.
这四句口诀暗示的意思是:当除数分别是3、5、7时,用70乘以用3除的余数,用21乘以用5除的余数,用15乘以用7除的余数,然后把这三个乘积相加.加得的结果如果比105大,就除以105,所得的余数就是满足题目要求的最小正整数解.
按这四句口诀暗示的方法计算韩信点的这队士兵的人数可得:
70×2+21×3+15×4=263,
263=2×105+53,
所以,这队士兵至少有53人.
在这种方法里,我们看到:70、21、15这三个数很重要,稍加研究,可以发现它们的特点是:
70是5与7的倍数,而用3除余1;
21是3与7的倍数,而用5除余1;
15是3与5的倍数,而用7除余1.
因而
70×2是5与7的倍数,用3除余2;
21×3是3与7的倍数,用5除余3;
15×4是3与5的倍数,用7除余4.
如果一个数除以a余数为b,那么给这个数加上a的一个倍数以后再除以a,余数仍然是b.所以,把70×2、21×3与15×4都加起来所得的结果能同时满足"用3除余2、用5除余3、用7除余4"的要求.一般地,
70m+21n+15k (1≤m<3, 1≤n<5,1≤k<7)
能同时满足"用3除余m 、用5除余n 、用7除余k"的要求.除以105取余数,是为了求合乎题意的最小正整数解.
我们已经知道了70、21、15这三个数的性质和用处,那么,是怎么把它们找到的呢?要是换了一个题目,三个除数不再是3、5、7,应该怎样去求出类似的有用的数呢?
为了求出是5与7的倍数而用3除余1的数,我们看看5与7的最小公倍数是否合乎要求.5与7的最小公倍数是5×7=35,35除以3余2,35的2倍除以3余2,35的2倍除以3就能余1了,于是我们得到了"三人同行七十稀".
为了求出是3与7的倍数而用5除余1的数,我们看看3与7的最小公倍数是否合乎要求.3与7的最小公倍数是3×7=21,21除以5恰好余1,于是我们得到了"五树梅花甘一枝".
为了求出是3与5的倍数而用7除余1的数,我们看看3与5的最小公倍数是否合乎要求.3与5的最小公倍数是3×5=15,15除以7恰好余1,因而我们得到了"七子团圆正半月".
3、5、7的最小公倍数是105,所以"除百零五便得知".
例如:试求一数,使之用4除余3,用5除余2,用7除余5.
我们先求是5与7的倍数而用4除余1的数;5与7的最小公倍数是5×7=35,35除以4余3,3×3除以4余1,因而35×3=105除以4余1,105是5与7的倍数而用4除余1的数.
我们再求4与7的倍数而用5除余1的数;4与7的最小公倍数是4×7=28,28除以5余3,3×7除以5余1,因而28×7=196除余5余1,所以196是4与7的倍数而用5除余1的数.
最后求的是4与5的倍数而用7除余1的数:4与5的最小公倍数是4×5=20,20除以7余6,6×6除以7余1,因而20×6=120除以7余1,所以120是4与5的倍数而用7除余1的数.
利用105、196、120这三个数可以求出符合题目要求的
105×3+196×2+120×5=1307.
由于4、5、7的最小公倍数是4×5×7=140,1307大于140,所以1307不是合乎题目要求的最小的解.用1037除以140得到的余数是47,47是合乎题目的最小的正整数解.
一般地,
105m+196n+120k (1≤m<4,1≤n<5,1≤k<7)
是用4除余m,用5除余n,用7除余k的数(105m+196n+120k)除以140所得的余数是满足上面三个条件的最小的正数.
上面我们是为了写出105m+196n+120k这个一般表达式才求出了105这个特征数.如果只是为了解答我们这个具体的例题,由于5×7=35既是5与7的倍数除以4又余3,就不必求出105再乘以3了.
35+196×2+120×5=1027
就是符合题意的数.
1027=7×140+47,
由此也可以得出符合题意的最小正整数解47.
《算法统宗》中把在以3、5、7为除数"物不知其数"问题中起重要作用的70、21、15这几个特征数用几句口诀表达出来了,我们也可以把在以4、5、7为除数的问题中起重要作用的105、196、120这几个特征数编为口诀.留给读者自己去编吧.
凡是三个除数两两互质的情况,都可以用上面的方法求解.
上面的方法所依据的理论,在中国称之为孙子定理,国外的书籍称之为中国剩余定理.
参考资料:少年百科
互助这道作业题的同学还参与了下面的作业题
题1: 韩信点兵问题解法三三数余一,五五数余三,七七数余一,共有多少士兵[数学科目]
43
题2: 韩信点兵的规律.急用.
韩信点兵多多益善,不管什么兵给他都能带.韩信将兵基本上不是靠兵员本身素质的,主要是靠个人计策取胜,有点像李广.
题3: 卫兵一队列成五行纵队,末行一人;列成六行纵队,末行五人;列成七行纵队,末行四人;列成十一行纵队,末行十人.求兵数.[数学科目]
用基础数法
5.l
基准数(2111)÷6……5
7.4
11.10
(一)求各除数的最小公倍数
〔5,6,7,11]=2310
(二)求各除数的基础数
(l)〔5] 2310÷5=462
462÷5=92……2
∵2×3-5=1
∴462×3=〔1386〕
(2)〔6] 2310÷6=385
385÷6=64……1
∵ 1×5=5
∴385×5=〔1925〕
(3)〔7〕 2310÷7=330
330÷7=47……1
∵1×4=4
∴330×4=〔1320〕
(4)〔11] 2310÷11=210
210÷11=19……1
∵1×10=10
∴210×10=〔2100〕
(三)求各基础数的和
1386+1925+1320+2100=6731
(四)求最小的基准数
6731-2310×2=2111(人)
(五)求最适合条件的数X
X=2111+2310K(K为整数)
答:这队兵至少有2111人.
注:各除数应两两互质,可确保命题的真实性.
题4: 求韩信点兵解法中国剩余定理[数学科目]
韩信点兵
作者:jianhao
汉高祖刘邦曾问大将韩信:“你看我能带多少兵?”韩信斜了刘邦一眼说:“你顶多能带十万兵吧!”汉高祖心中有三分不悦,心想:你竟敢小看我!“那你呢?”韩信傲气十足地说:“我呀,当然是多多益善啰!”刘邦心中又添了三分不高兴,勉强说:“将军如此大才,我很佩服.现在,我有一个小小的问题向将军请教,凭将军的大才,答起来一定不费吹灰之力的.”韩信满不在乎地说:“可以可以.”刘邦狡黠地一笑,传令叫来一小队士兵隔墙站队,刘邦发令:“每三人站成一排.”队站好后,小队长进来报告:“最后一排只有二人.”“刘邦又传令:“每五人站成一排.”小队长报告:“最后一排只有三人.”刘邦再传令:“每七人站成一排.”小队长报告:“最后一排只有二人.”刘邦转脸问韩信:“敢问将军,这队士兵有多少人?”韩信脱口而出:“二十三人.”刘邦大惊,心中的不快已增至十分,心想:“此人本事太大,我得想法找个岔子把他杀掉,免生后患.”一面则佯装笑脸夸了几句,并问:“你是怎样算的?”韩信说:“臣幼得黄石公传授《孙子算经》,这孙子乃鬼谷子的弟子,算经中载有此题之算法,口诀是:
三人同行七十稀,
五树梅花开一枝,
七子团圆正月半,
除百零五便得知.”
刘邦出的这道题,可用现代语言这样表述:
“一个正整数,被3除时余2,被5除时余3,被7除时余2,如果这数不超过100,求这个数.”
《孙子算经》中给出这类问题的解法:“三三数之剩二,则置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十;并之得二百三十三,以二百一十减之,即得.凡三三数之剩一,则置七十;五五数之剩一,则置二十一;七七数之剩一,则置十五,一百六以上,以一百五减之,即得.”用现代语言说明这个解法就是:
首先找出能被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是满足题目要求的一个数.
而3、5、7的最小公倍数是105,故233加减105的整数倍后被3、5、7除的余数不会变,从而所得的数都能满足题目的要求.由于所求仅是一小队士兵的人数,这意味着人数不超过100,所以用233减去105的2倍得23即是所求.
这个算法在我国有许多名称,如“韩信点兵”,“鬼谷算”,“隔墙算”,“剪管术”,“神奇妙算”等等,题目与解法都载于我国古代重要的数学著作《孙子算经》中.一般认为这是三国或晋时的著作,比刘邦生活的年代要晚近五百年,算法口诀诗则载于明朝程大位的《算法统宗》,诗中数字隐含的口诀前面已经解释了.宋朝的数学家秦九韶把这个问题推广,并把解法称之为“大衍求一术”,这个解法传到西方后,被称为“孙子定理”或“中国剩余定理”.而韩信,则终于被刘邦的妻子吕后诛杀于未央宫.
请你试一试,用刚才的方法解下面这题:
一个数在200与400之间,它被3除余2,被7除余3,被8除余5,求该数.
(112×2+120×3+105×5+168k,取k=-5得该数为269.)
什么叫做“韩信点兵”?
韩信点兵是一个有趣的猜数游戏.如果你随便拿一把蚕豆(数目约在100粒左右),先3粒3粒地数,直到不满3粒时,把余数记下来;第二次再5粒5粒地数,最后把余数记下来;第三次是7粒一数,把余数记下来.然后根据每次的余数,就可以知道你原来拿了多少粒蚕豆了.不信的话,你还可以实地试验一下.例如,假如3粒一数余1粒,5粒一数余2粒,7粒一数余2粒,那么,原有蚕豆有多少粒呢?
这类题目看起来是很难计算的,可是我国有时候却流传着一种算法,综的名称也很多,宋朝周密叫它“鬼谷算”,又名“隔墙算”;杨辉叫它“剪管术”;而比较通行的名称是“韩信点兵”.最初记述这类算法的是一本名叫《孙子算经》的书,后来在宋朝经过数学家秦九韶的推广,又发现了一种算法,叫做“大衍求一术”.这在数学史上是极有名的问题,外国人一般把它称为“中国剩余定理”.至于它的算法,在《孙子算经》上就已经有了说明,而且后来还流传着这么一道歌诀:
三人同行七十稀,
五树梅花廿一枝,
七子团圆正半月,
除百零五便得知.
这就是韩信点兵的计算方法,它的意思是:凡是用3个一数剩下的余数,将它用70去乘(因为70是5与7的倍数,而又是以3去除余1的数);5个一数剩下的余数,将它用21去乘(因为21是3与7的倍数,又是以5去除余1的数);7个一数剩下的余数,将它用15去乘(因为15是3与5的倍数,又是以7去除余1的数),将这些数加起来,若超过105,就减掉105,如果剩下来的数目还是比105大,就再减去105,直到得数比105小为止.这样,所得的数就是原来的数了.根据这个道理,你可以很容易地把前面的五个题目列成算式:
1×70+2×21+2×15-105
=142-105
=37
因此,你可以知道,原来这一堆蚕豆有37粒.
1900年,德国大数学家大卫·希尔伯特归纳了当时世界上尚未解决的最困难的23个难题.后来,其中的第十问题在70年代被解决了,这是近代数学的五个重大成就.据证明人说,在解决问题的过程中,他是受到了“中国剩余定理”的启发的.
题5: 如何用孙子定理计算韩信点兵的问题有一队士兵,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人,求最少有多少人?用孙子定理计算
使用穷举法:
先用7*1+6=13去尝试,13不能满足站3人一排多2人,继续;
再用13+7=20去尝试,20也不能满足站3人一排多2人,继续;
再用20+7=27去尝试,27也不能满足站3人一排多2人,继续;
再用27+7=34去尝试,34也不能满足站3人一排多2人,继续;
再用34+7=41去尝试,41不能满足站5人一排多4人继续;
再用41+7=48去尝试,48不满足站3人一排多2人,继续;
再用48+7=55去尝试,55不满足站3人一排多2人,继续;
再用55+7=62去尝试,62不满足站5人一排多4人,继续;
再用62+7=69去尝试,69不满足站3人一排多2人,继续;
再用69+7=76去尝试,76不满足站3人一排多2人,继续;
再用76+7=83去尝试,83不满足站5人一排多4人,继续;
再用83+7=90去尝试,90不满足站5人一排多4人,继续;
再用90+7=97去尝试,97不满足站3人一排多2人,继续;
再用97+7=104去尝试,104三个条件全满足,找到最少人数104人.