圖/River
文/維尼老師
韓信是漢朝開國大將,幫助劉邦打敗項羽,取得天下。漢朝建立後,因為很多因素,劉邦想除掉韓信,可是韓信驍勇善戰,兵多將廣,劉邦不太敢輕舉妄動。
有一次劉邦問韓信,你有多少士兵?韓信不直接回答,卻故弄玄虛的說:「我的士兵不知道有多少人,三個三個一數,剩下兩個;五個五個一數,剩下三個;七個七個一數,剩下兩個。」劉邦聽了一頭霧水,還是不知道韓信到底有多少士兵。
這種要估算總數的問題,關鍵在於餘數,一般在中小學遇到的題目有兩種:一種是幾個一數都剩一樣多——餘數相同;另外一種是幾個一數都缺一樣多——不足數相同。這兩種題目解法很簡單,找到適當的公倍數,加上餘數或減去不足數就可求得答案。但是,不管同餘或同不足,都只能算是特例,通常生活中遇到的例子,餘數並不會這麼有規則,往往不同數量一數,餘數並不全然相同,這時上面的簡單方法就失效了,那怎麼辦呢?
這類問題,傳統上把它叫做「韓信點兵」、「秦王暗點兵」、「鬼谷算」、「隔牆算」、「剪管術」、「神奇妙算」、「大衍求一術」等,名稱很多,但指的都是計算總數時,餘數不一的情況。這個問題最早出現在南北朝的《孫子算經》中,這一本書是中國著名的數學著作,共分三卷,下卷的第26題「物不知數」說道:「今有物,不知其數。三三數之,剩二;五五數之,剩三;七七數之,剩二。問:物幾何?答曰:二十三。」用白話來說就是:「現在有一堆東西,不知道幾個,3個一數剩下2個,5個一數剩下3個,7個一數剩下2個,請問這堆東西的數量是多少呢?答案是23個。」
書中給出解這類問題的基本原則:「凡三三數之剩一,則置七十;五五數之剩一,則置二十一;七七數之剩一,則置十五。一百六以上(≧106),以一百五減之(減去105),即得。」意思就是:「如果3個一數剩1個,就擺上70;5個一數剩1個,就擺上21;7個一數剩1個就擺上15。加起來在106以上,就減去105(減完還是超過106就再減105)。」
而針對上述問題的解法則是「三三數之剩二,置一百四十;五五數之剩三,置六十三;七七之數剩二,置三十。併之得二百三十三。以二百一十減之,即得。」因為原則是「三三數之剩一則置七十」,而題目中「三三數之剩二」,所以擺上70的2倍也就是140,依此類推。
如果把要求的總數設為x,那麼「韓信點兵」的解法用數學式子來表示就是:
x=70×2+21×3+15×2-105×2
x=140+63+30-210
x=23
23是這道問題的最小整數解。為了幫助記憶解法中70、21、15、105這幾個數,明朝的程大位在《算法統宗》一書中,把它們及解答編成歌訣:三人同行七十稀,五樹梅花廿一枝,七子團圓正半月,除百零五便得知。
像這類韓信點兵的問題,中國人最早研究並提出解法,遙遙領先歐洲的數學家,因此現在大家都把它稱為「中國剩餘定理」,以紀念中國數學家在這方面的成就。