韩信点兵的趣味数学
2018/1/23 20:32:03 AnnieEasyFM

     三观正的读者都点赞了

     ◆ ◆ ◆ ◆ ◆

     网友“轩辕黄帝”发来文章(这名字吓我一跳),写了他过去解奥数题的小文章。文章不长但是挺有意思,曾经被逼着学奥数的同学可以看看。爱好真是个好东西,如果善加利用能制造出很多乐趣。

     文:轩辕黄帝 | 编辑:爽临

    

     从前的爱好奥数,所以拿“韩信点兵”这一经常被提及的中国古代数学问题来练练手,求出它的通解。

     “韩信点兵”问题,大意如此:

     一群人,数量不少,虽难以查出具体数量,却听从指挥,犹如军人,故而托名“韩信点兵”。于是让他们先每三个人一排,余出若干人;再让他们每五个人一排,又余出若干人;再让他们每七个人一排,又余出若干人。而且,这群人的数量,有一个大概的范围。问这群人具体数量是多少。

     举例来说,一群人的数量在800-900之间,每3人一排则余出1人,每5人一排又余出1人,每7人一排还余出1人。则这群人数量,答案是841人。 在金庸的《射雕英雄传》里,瑛姑就曾被黄蓉指点这个问题的解法。黄蓉还给出了古书里所谓的“通解”: 三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百零五便得知。意思是说,三人一排的余数乘以70,加上五人一排的余数乘以21,再加上七人一排的余数乘以15,再加减若干个105来调节得数的大概范围,就能得出正确答案。

     拿我上一段所举出的例子来说,三人一排的余数是1,则1*70=70;五人一排的余数是1,则1*21=21;七人一排的得数是1,则1*15;然后,70+21+15=106;但是人数的范围在800-900之间,所以加上105*7=735来调节得数的范围,106+735=841。最后,841就是答案。 古书里这所谓的“通解”,其实并非“真正的”通解。

     因为,如果每排的人数,并非分别是3、5、7,而是其他的3个数字,则又该如何解出?所以,这首解题的诗,只不过是一个特例罢了,不是该问题的真正通解。 我给出真正的通解如下: 如果每次排队,每排人数分别是a、b、c,三次站队对应的余出的人数分别为i、j、k,则人数为P=ix+jy+kz-n[a,b,c],其中,[ ]是表示“最小公倍数”的数学符号,[a,b,c]为a、b、c这三个数字的最小公倍数,n是一个任意整数;x是[b,c]的一个倍数,且被a除的余数是1,同理,y是[a,c]的一个倍数,且被b除的余数是1,z是[a,b]的一个倍数,且被c除的余数是1。

     再拿一个例子来试验一下。比如说,一群人,每9个人一排,余出5个人,每11个人一排,余出7个人,每17个人一排,余出10个人。并且这群人的人数超过10万。问这群人的数量至少是多少。 那么,套入通解的公式中,abc分别为9、11、17,ijk分别为5、7、10,则[a,b,c]=1683,[a,b]=99,[b,c]=187,[a,c]=153。

     先求出i的系数x。

     首先,x是[b,c]=187的整数倍,并且,x除以9的余数必须是1,那么,得出x=187*4=748。同理,y是[a,c]=153的整数倍,并且y除以11的余数必须是1,那么得出y=153*10=1530。同理,z是[a,b]=99的整数倍,并且z除以17的余数必须是1,那么得出z=99*11=1089。 现在我们又得出xyz这三个系数了,再将余数套入公式。

     P=748*5+1530*7+1089*10+n*1683=3740+10710+10890+n*1683=25340+n*1683。题目已经说了,人数超过10万,则用n来调节大小。求出n=45时,大小适宜。所以,P=25340+45*1683=101075。 验证一下,看看对不对。101075/9=11230余5。101075/11=9188余7。101075/17=5945余10。与题设相吻合。 这才是“韩信点兵”问题的真正通解。

     这道题的原理比较复杂,限于精力和篇幅,下次有机会再接着说。

    

     AnnieEasyFM个人公号,提供靠谱又毒辣的观点。定期毁三观,但不保证重建;不定期发布原创文章和语音。想说的、感兴趣的、觉得有价值的都会发,但可能主要和以下内容有关:饮食/健康/疾病、转基因/中医药/辟谣,育儿常识/科学思维,偶尔美妆与护肤。支持平权,穆黑,反狗权。有问题发在留言区,我选择有趣的回答和上墙;任何人可以留言,但本人保留说话不客气的权利。

     投稿邮箱:Easy.FM@qq.com

    http://weixin.100md.com
返回 AnnieEasyFM 返回首页 返回百拇医药