韓信點兵
漢語成語
韓信點兵的成語來源淮安民間傳說。常與多多益善搭配。寓意越多越好。
劉邦問他:“你覺得我可以帶兵多少?”
韓信:“最多十萬。”
劉邦不解的問:“那你呢?”
韓信自豪地說:“越多越好,多多益善嘛!
劉邦半開玩笑半認真的說:“那我不是打不過你?”
韓信說:“不,主公是駕馭將軍的人才,不是駕馭士兵的,而將士們是專門訓練士兵的。”
淮安民間傳說著一則故事——“韓信點兵”,其次有成語“韓信點兵,多多益善”。
韓信帶1500名兵士打仗,戰死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韓信很快說出人數:1049。
在一千多年前的《孫子算經》中,有這樣一道算術題:“今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?”按照今天的話來說:一個數除以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語言來表達這個演演算法: