军事与数学(一)

来源:互联网 发布:python 驼峰 编辑:程序博客网 时间:2024/05/21 21:30

 三人同行七十稀,

五树梅花廿一支,

七子团圆正半月,

除百零五使得知

定场诗一首。

>>>


这是非常有名的一首诗,描绘了这样一幅场景。说有仨兄弟一起走路,走了70里就窜稀了;然后刚好看见有五棵梅树,巧的是每棵树恰好有21个分枝。他们其实是一根藤上七朵花,七朵花结七个瓜;每个瓜藏一个娃,还有有一个老爷爷和蛇精蝎子精。话说到了八月十五。。。


好吧,我编不下去了。这是我国古代著名的孙子定理,在欧洲称为中国剩余定理。说起这个就是特娘的一肚子火,欧洲人用自己名字命名的定理一大堆,比如毕达哥拉斯定理,拉格朗日中值定理,牛顿莱布尼兹定理啥的,然后好不容易有个中国人名字命名的孙子定理,居然叫中国剩余定理,所以数学的圈子也是有霸权的。


哦,顺便说一句,毕达哥拉斯定理在中国叫勾股定理,我们比丫早了500多年,哼~

    继续说孙子定理。

    这首诗的真实含义如下:

三人同行七十稀, 把除以3所得的余数用70乘;
 五树梅花廿一支, 把除以5所得的余数用21乘;
 七子团圆正半月, 把除以7所得的余数用15剩;
除百零五使得知,  把上述三个积加起来,减去105的倍数,所得的差即为所求。


这其实是为了解决以下问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?


用孙子定理我们很容易算出来,这个数是23。


有旁友会说了,这个太特殊了吧,只能除以3,5,7诶,那知道除其他的数的余数能推断出这个数是多少么?


呵呵呵呵呵。。。


人不作死就不会死。。。 前方高能预警:

用现代数学的语言来说明的话,中国剩余定理给出了以下的一元线性同余方程组:



现在是不是觉得孙子定理好懂了很多?


孙子定理最早见于孙子算经, 《孙子算经》是中国古代重要的数学著作。成书大约在四、五世纪,也就是大约一千五百年前,传本的《孙子算经》共三卷。卷上叙述算筹记数的纵横相间制度和筹算乘除法,卷中举例说明筹算分数算法和筹算开平方法。卷下第31题,可谓是后世“鸡兔同笼”题的始祖,后来传到日本,变成“鹤龟算”。书中是这样叙述的:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?这四句话的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。求笼中各有几只鸡和兔?


这孙子可真是孙贼。。。害了多少人去考虑为什么要把鸡和兔放一起,以至于考虑的多少小学生怀疑人生了。。。


这孙子除了会写数学书,关键还会打仗,写了一部孙子兵法。。。



还训练了女兵:


由于他点兵神速,所以出兵也快,开分基地也快。。。像这样:


好吧,我实在编不下去了。事实上,孙子算经的作者。。。。


不详。。。

不详。。。

不详。。。

     

不过还真有一个关于某战神利用这个定理点兵的故事:韩信。

      

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

    

是不是算的很快?

    

当然,就当故事听吧。不过计算的方法就是上面的同余定理。真要算的快?

那就这样吧:

#include<cstdio>

int

main()

{int a=2,b=3,c=2,x;

scanf("%d%d%d",&a,&b,&c);

printf("%d%d%d\n" ,a,b,c);

for(x=10;x<=1100;x++)

if(x%3==a&&x%5==b&&x%7==c)

{printf("%d",x);break;}

else

if(x==1100)

printf("noanswer\n");

return 0;

}


所以,要当好将军,首先要做到随时能知道自己的实力,

!!!!!!


来源:梦台州


算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域。

稿件一经采用,我们将奉上稿酬。

投稿邮箱:math_alg@163.com

原创粉丝点击