三人同行七十稀,
五树梅花廿一支,
七子团圆正半月,
除百零五使得知
定场诗一首。
>>>>
这是非常有名的一首诗,描绘了这样一幅场景。说有仨兄弟一起走路,走了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
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;
}
所以,要当好将军,首先要做到随时能知道自己的实力,
一
定
要
学
好
数
学
啊
!!!!!!
来源:梦台州
算法数学之美微信公众号欢迎赐稿
稿件涉及数学、物理、算法、计算机、编程等相关领域。
稿件一经采用,我们将奉上稿酬。
投稿邮箱:[email protected]