作者 宋辰芯
一、研究動機
小時候我曾經看過一本有關數學的書,有一章節就是韓信點兵,就是請士兵三個為一組,五個為一組,七個為一組,再將三個為一組剩餘的人數乘以 70,五個為一組剩餘的人數乘以 21,七個為一組剩餘的人數乘以 15,再將三個數字加起來,除以 105,就可以算出士兵人數。 我們舉個例子:「假如有一些士兵,三個一數餘 2 人,五個一數餘 2 人,七個一數餘 4 人,請 問士兵最少有幾人?」算式如下:
2*70+2*21+4*15=242
242/105=2 餘 32
所以我們可以知道士兵有 32 人,來驗證一下:32 除 3 餘 2,32 除 5 餘 2,32 除 7 餘 4。 果真如同算式的結果士兵有 32 人。如果不相信我們再舉一個例子:「假如有一些士兵,三個 一數剩 1 人,五人一數剩 3 人,七人一數剩 2 人,請問士兵最少有幾人?」算式如下:
1*70+3*21+2*15=163
163/105=1 餘 58
等於士兵有 58 人,同樣也要驗證看看:58 除 3 餘 1,58 除 5 餘 3,58 除 7 餘 2,所以士兵有 58 人。可是上面題目的數字都很小,但是古代的士兵都很龐大,所以我想知道韓信真的 能靠這個方法來算出有多少士兵嗎?
二、探討過程
我們可以發現這個算法很神奇,算的也非常準確,但是我們算出的數字是一個最小值,不是正確的數字,那麼該怎麼辦呢?這時就要看我們對人數知不知道一個大概的數字,如果不 知道的話只能去推測人數大概的區間,也因此人數越大這個方法越不可行。在古代一個部隊 少說也有 1000 人,多則 10 萬、50 萬,甚至 100 萬。根據以上,我將士兵人數分成四種情況: 「士兵人數位於 105 人以內」、「士兵人數大於 105 人,小於 1000 人」、「士兵人數大於 1000 人」、「有 105 位士兵一起逃跑了」。
(一)士兵人數位於 105 人以內
1-1 假如士兵有 65 人,三個一數剩 2 人,五人一數剩 0 人,七人一數剩 2 人,請問士兵有幾 人?
2*70+0*21+2*15=170
170/105=1 餘 65
從 1-1 我們可以發現當士兵小於 105 時,完全不用再做任何動作,就能知道士兵有 65 人。
(二)士兵人數大於 105 人,小於 1000 人
2-1 假如士兵有 650 人,三個一數剩 2 人,五人一數剩 0 人,七人一數剩 6 人,請問士兵有幾 人?
2*70+0*21+6*15=230
230/105=20
20+105*6=650
2-2 假如士兵有 995 人,三個一數剩 2 人,五人一數剩 0 人,七人一數剩 1 人,請問士兵有幾 人?
2*70+0*21+1*15=155
155/105=1 餘 50
50+105*9=995
從 2-1、2-2 我們可以知道當士兵小於 105 人,小於 1000 人時,算出來的數字必須加上 很多個 105 才能知道士兵有幾人。但是如果有多加一個 105 或少加一個 105,本來是 995 但 是可能算成 890,所以士兵小於 105 人,小於 1000 人時這個方法就不太好。
(三)士兵人數大於 1000 人
3-1 假如士兵有 6500 人,三個一數剩 2 人,五人一數剩 0 人,七人一數剩 4 人,請問士兵有 幾人?
2*70+0*21+4*15=200
200/105=95
95+61*105=6500
3-2 假如士兵有 9950 人,三個一數剩 2 人,五人一數剩 0 人,七人一數剩 3 人,請問士兵有 幾人?
2*70+0*21+3*15=185
185/105=80
80+94*105=9950
從 3-1 和 3-2 我們可以發現當士兵人數大於 1000 人時,要加的 105 更多,所以這個方法 在士兵人數大於 1000 人時,可行性是很低的。
(四)有 105 位士兵一起逃跑了
4-1.假如士兵有 1294 人,三個一數餘 1,五個一數餘 4,七個一數餘 6,請問士兵有幾人?
1*70+4*21+6*15=244
244/105=34
4-2.呈上題,如果 105 位士兵一起逃走了,那麼韓信會不會發現呢?
1294-105=1189
士兵有 1189 人,三個一數餘 1,五個一數餘 4,七個一數餘 6,請問士兵有幾人?
1*70+4*21+6*15=244
244/105=34
從 4-2 我們可以看出如果 105 人一起逃走,結果是一樣的(都是三個一數餘 1,五個一數餘4,七個一數餘 6),也就是說韓信無法知道有沒有人逃走。
從上述我們可以知道韓信點兵雖然準確,但是在人數多就無法知道。也就是說我們必須知道一個確切的範圍,而且就算知道,範圍必須是小於 105,否則就會出現 1 個以上的答案。 再者士兵的人數之多,韓信在點兵時必須確定每個人都有被算到,所以我覺得韓信點兵在古 代是不可行的。
三、原因
除以 3 的餘數要乘以 70,除以 5 的餘數要乘以 21,除以 7 的餘數要乘以 15,最後加起 來要除以 105。神奇的是:
70 是 5 和 7 的公倍數
21 是 3 和 7 的最小公倍數
15 是 3 和 5 的最小公倍數
105 是 3、5、7 的最小公倍數
可是只有 70 不是 5 和 7 的最小公倍數,但是我們可以斷定與公倍數有關。
四、結論
從上述可以看出韓信點兵的方法適用於較小的數字,而且算的又快速又準確,不過如果是在算較為龐大的數字,可能會很辛苦。
這種算法是我從沒接觸的,也比較不常見,我覺得又新奇又有趣。我一直思考這種點兵 的方法真的是韓信發明的嗎?如果是的話,韓信未免也太聰明了吧!難怪能成為大將軍。