韩信点兵问题咋解
编辑词条韩信点兵
民间传说着一则故事——“韩信点兵”.
秦朝末年,楚汉相争.一次,韩信将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人
中国有一本数学古书「孙子算经」也有类似的问题:「今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?」
答曰:「二十三」
术曰:「三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得.凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得.」
孙子算经的作者及确实著作年代均不可考,不过根据考证,著作年代不会在晋朝之后,以这个考证来说上面这种问题的解法,中国人发现得比西方早,所以这个问题的推广及其解法,被称为中国剩余定理.
简单扼要总结:
1.算两两数之间的能整除数
2.算三个数的能整除数
3.用1中的三个整除数之和减去2中的整除数之差(有时候是倍数)
4计算结果即可
韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人.韩信马上说出人数:1049
如多一人,即可凑整.幸存人数应在1000~1100人之间,即得出:
3乘5乘7乘10减1=1049(人)
一个数除以3余2,除以5余4,除以7余6,求这个数最小是多少?
这个题目属于韩信点兵问题。
传说,有一天,韩信来到操练场,检阅士兵操练。他问部将,今天有多少士兵操练,部将回答:“大约两千三百人。”韩信走上点兵台,他先命全体士兵排成七路纵队,最后一排剩下2人;他又命全体士兵排成5路纵队,问最后一排剩几人,部将说,剩3人;最后,他又让全体士兵排成3路纵队,问最后一排剩几人,部将说,剩2人。韩信告诉部将,今天参加操练的士兵有2333人。
韩信点兵问题的解法,有这样一句口诀:
三人同行七十稀,五树梅花二十一。
七子团圆正半月,除百零五便得知。
所以我们用这个数除以3的余数乘以70,得140,除以5的余数乘以21,得84,然后再用除以7的余数乘以15,得90,全加起来,得314,减去105的2倍,得104,所以这个数最小是104。
希望我能帮助你解疑释惑。
韩信点兵的问题
韩信点兵又称为中国剩余定理,相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人……。刘邦茫然而不知其数。 我们先考虑下列的问题:假设兵不满一万,每5人一列、9人一列、13人一列、17人一列都剩3人,则兵有多少? 首先我们先求5、9、13、17之最小公倍数9945(注:因为5、9、13、17为两两互质的整数,故其最小公倍数为这些数的积),然後再加3,得9948(人)。 中国有一本数学古书「孙子算经」也有类似的问题:「今有物,不知其数,三三数之,剩二,五五数之,剩三,七七数之,剩二,问物几何?」 答曰:「二十三」 术曰:「三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得。」 孙子算经的作者及确实着作年代均不可考,不过根据考证,着作年代不会在晋朝之後,以这个考证来说上面这种问题的解法,中国人发现得比西方早,所以这个问题的推广及其解法,被称为中国剩余定理。中国剩余定理(Chinese Remainder Theorem)在近代抽象代数学中占有一席非常重要的地位。
麻烦采纳,谢谢!
用Java编程解决韩信点兵的问题?
给你提供三种方法,楼下的太具有局限性。我这个还有点错误,但是对这个题没啥事,当按对应的数报数时,如果最后一个报数为最后一个,要余数等于0
public class HanXin {
public static void main(String[] args) {
int num=HanXin.peopleNum(1,1,5,4,10);
System.out.println(num);
num = HanXin.peoplrNum_For(1,1,5,4,10);
System.out.println(num);
num = HanXin.peoplrNum_For_op(1,5,4,10);
System.out.println(num);
}
//递归方法
public static int peopleNum(int num,int num5,int num6,int num7,int num11){
if(num%5==num5 num%6==num6 num%7==num7 num%11==num11){
return num;
}else{
return peopleNum(num+1,num5,num6,num7,num11);
}
}
//循环方法number of people
public static int peoplrNum_For(int num,int num5,int num6,int num7,int num11){
for(int i = num; i 0; i++){
if(i%5==num5 i%6==num6 i%7==num7 i%11==num11){
return i;
}
}
return 0;
}
//循环方法,针对题目优化版
public static int peoplrNum_For_op(int num5,int num6,int num7,int num11){
for(int i = 10; i 0; i++){
if(i%5==num5 i%6==num6 i%7==num7 i%11==num11){
return i;
}
}
return 0;
}
}
韩信点兵,每3人一列余一人,5人一列余2人,7人一列余4人,13人一列余6人,问总共有多少士兵?
3x5x7x13=1365,
5-2=7-4=3,
(35×2-3)÷3余1
(105×4+67)÷13余6
答总共有1365k+487人。(k≥0)