“韩信点兵”是源于淮安民间传说着一则故事,常与多多益善搭配。寓意越多越好。
成语故事
淮安民间传说着一则故事——“韩信点兵”,其次有成语“韩信点兵,多多益善”。
韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出3人。韩信很快说出人数:1004。
算术题目
在一千多年前的《
孙子算经》中,有这样一道算术题:“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”按照今天的话来说:一个数除以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。
用C语言来表达这个算法: