当前位置:首页 » 操作系统 » 韩信点兵算法口诀

韩信点兵算法口诀

发布时间: 2023-02-23 23:48:15

① 韩信点兵的计算公式是什么

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。

输入

输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7)。例如,输入:2 4 5

输出

输出总人数的最小值(或报告无解,即输出Noanswer)。实例,输出:89

样例输入

2 1 6

样例输出

41

 

定理1 如a被n除所得的余数等b被n除所得的余数,c被n除所得的余数等于d被n除所得的余数, 则ac被n除所得的余数等于b d被n除所得的余数。

用同余式叙述就是:

如a≡b(mod n ),c≡d(mod n )

则ac≡b d(mod n ) 

定理2 被除数a加上或减去除数b的倍数,再除以b,余数r不变。即

如a ≡ r(mod b ),则a ± b n≡r(mod b )

例如70≡1(mod 3 )可得70±10×3≡1(mod 3 ) 

 

【韩信点兵法口诀的原理】

①能被5,7除尽数是35k,其中k=2,即70除3正好余1,70a 除3正好余a。

②能被3,7除尽数是21k,其中k=1,即21除5正好余1,21b 除5正好余b。

③能被3,5除尽数是15k,其中k=1,即15除7正好余1,15c 除7正好余c。

② 韩信大点兵口诀

民间传说着一则故事——“韩信点兵”。

秦朝末年,楚汉相争。一次,韩信将1500名将士与楚王大将李锋交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿兵马也返回大本营。当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀声震天。汉军本来已十分疲惫,这时队伍大哗。韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:我军有1073名勇士,敌人不足五百,我们居高临下,以众击寡,一定能打败敌人。汉军本来就信服自己的统帅,这一来更相信韩信是“神仙下凡”、“神机妙算”。于是士气大振。一时间旌旗摇动,鼓声喧天,汉军步步进逼,楚军乱作一团。交战不久,楚军大败而逃。

首先我们先求5、9、13、17之最小公倍数9945(注:因为5、9、13、17为两两互质的整数,故其最小公倍数为这些数的积),然后再加3,得9948(人)。

在一千多年前的《孙子算经》中,有这样一道算术题:

“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以3余2,除以5余3,除以7余2,求这个数.

这样的问题,也有人称为“韩信点兵”.它形成了一类问题,也就是初等数论中解同余式.这类问题的有解条件和解的方法被称为“中国剩余定理”,这是由中国人首先提出的.

① 有一个数,除以3余2,除以4余1,问这个数除以12余几?

解:除以3余2的数有:

2, 5, 8, 11,14, 17, 20, 23….

它们除以12的余数是:

2,5,8,11,2,5,8,11,….

除以4余1的数有:

1, 5, 9, 13, 17, 21, 25, 29,….

它们除以12的余数是:

1, 5, 9, 1, 5, 9,….

一个数除以12的余数是唯一的.上面两行余数中,只有5是共同的,因此这个数除以12的余数是5.

如果我们把①的问题改变一下,不求被12除的余数,而是求这个数.很明显,满足条件的数是很多的,它是 5+12×整数,

整数可以取0,1,2,…,无穷无尽.事实上,我们首先找出5后,注意到12是3与4的最小公倍数,再加上12的整数倍,就都是满足条件的数.这样就是把“除以3余2,除以4余1”两个条件合并成“除以12余5”一个条件.《孙子算经》提出的问题有三个条件,我们可以先把两个条件合并成一个.然后再与第三个条件合并,就可找到答案.

②一个数除以3余2,除以5余3,除以7余2,求符合条件的最小数.

解:先列出除以3余2的数:

2, 5, 8, 11, 14, 17, 20, 23, 26,…,

再列出除以5余3的数:

3, 8, 13, 18, 23, 28,….

这两列数中,首先出现的公共数是8.3与5的最小公倍数是15.两个条件合并成一个就是8+15×整数,列出这一串数是8, 23, 38,…,再列出除以7余2的数 2, 9, 16, 23, 30,…,

就得出符合题目条件的最小数是23.

事实上,我们已把题目中三个条件合并成一个:被105除余23.

那么韩信点的兵在1000-1500之间,应该是105×10+23=1073人

中国有一本数学古书“孙子算经”也有类似的问题:“今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?”

答曰:“二十三”

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

孙子算经的作者及确实着作年代均不可考,不过根据考证,着作年代不会在晋朝之后,以这个考证来说上面这种问题的解法,中国人发现得比西方早,所以这个问题的推广及其解法,被称为中国剩余定理。中国剩余定理(Chinese Remainder Theorem)在近代抽象代数学中占有一席非常重要的地位。

简单扼要总结:
1.算两两数之间的能整除数
2.算三个数的能整除数
3.用1中的三个整除数之和减去2中的整除数之差(有时候是倍数)
4计算结果即可

③ 韩信点兵的计算公式是什么

古代时候有个《孙子算经》有几句乘法口诀:三人同行七十稀, 五树梅花廿一枝, 七子团圆正半月, 除百零五便得知。 意思是 3人一数剩下余数*70。5人一数剩下余数*21。七人一数剩下余数*15。然后+105.加到你感觉对啦就知道了。因为已知死了四五百了。

所以算法是这样的:2*70+4*21+6*15=314人

314+105+105+105+105+105+105+105=1049人。

④ 谁知到那个韩信点兵的计算公式,关于余数的好像是算总

韩信乱点兵口诀:三人同行七十稀,五束梅花二十一,妻子团圆整半月,除百零五便得知。
适用范围是已知总数除以3、5、7后的余数,并且要知道总数的取值范围。然后用除以3的余数乘以70,5的余数乘以21,7的余数乘以15,最后把这三个数的和加起来根据数值范围减(或者加)若干个105(3、5、7的最小公倍数)求解。
比如:100以内的一个数,除以3余2,除以5余3,除以7余4,则2x70=140,3x21=63,4x15=60,140+63+60=263,263-105=158,158-105=53。

⑤ "韩信点兵"怎么个点法

分类: 文化/艺术 >> 文学 >> 小说
问题描述:

据说韩信点兵是非常科学的,可我却不清楚有谁在吗?

解析:

韩信点兵

作者: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年代被解决了,这是近代数学的五个重大成就。据证明人说,在解决问题的过程中,他是受到了“中国剩余定理”的启发的。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:581
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1012
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:113
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:712