韓信暗點兵
國漢初軍事家韓信神機妙算,百戰百勝。傳說,在一次戰鬥前,為了弄清敵方兵力,韓信化到敵營外偵察,隔著高大的寨牆,偷聽裏面敵將正在指揮練兵。只聽得按3人一行整隊時,最後剩零頭1人,按5人一行整隊時,剩零頭2人,7人一行整隊時,剩零頭3人,11人一行整隊時,剩零頭1人。據此,韓信很這是流傳於民間的故事:《韓信暗點兵》。
「韓信暗點兵」作為數學問題,最早出現在我國古代的《孫子算經》中。原文是「今有物不佑其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?
用現代話來說:「今有一堆東西,不知它的數量。如果三個三個地數,最後剩二個,五個五個地數,最後剩三個,七個七個地數,最後剩二個,問這一堆東西有多少個?」
該書給出的解法是:
N=70×2+21×3+21×15×2-2×105
這個解法巧妙之處在於70、21、15這三個數。
70可以被5和7整除,並且是用3除餘1的最小正整數,因此2×70被3除餘2。
21可以被3和7整除,並且是用5除餘1的最小正整數,因此3×21被5除餘3。
15可以被3和5整除,並且是用7除餘1的最小正整數,因此2×15被7除餘2。
這個數大於100,容易算出3、5、7的最小公倍數是105。從這個數中減去兩倍的105,不會影響被3、5、7除所得的餘數。
N=70×2+21×3+15×2-2×105=23
我國明代數學家程大位在《算法統宗》裏用詩歌形式給出了以上的解法,便於記憶:
三人同行七十稀,五樹梅花廿一枝,
七子團圓月正半,除百零五便得知。
「三人同行七十稀」,表示70是被3除餘1,且能被5和7整除。「五樹梅花廿一枝」,與上句類似。「月正半」就是15。「除百零五便得知」,這裏「除」是「減」的意思,減去105的整數倍就可得知結果。
仿照《孫子算經》中「物不知數」問題的解法,算一算「韓信暗點兵」:
N=385×1+231×2+330×3+210×1-1155
=2047-1155=892
「韓信暗點兵」在中國古代數學史上有過不少有趣的別名,如「鬼谷算」、「秦王暗點兵」、「剪管術」、「隔牆算」等。
1852年,《孫子算經》傳入歐洲,人們發現孫子解法與歐洲著名數學家高斯的定理一致,而孫子研究早了一千多年。這個定理被稱為「中國剩餘定理」或「孫子剩餘定理」。這個定理不僅在數學史上佔有重要地位,而且還包含了近代數學中許多問題所使用的一個根本原則,在電子計算機的設計中也不可缺少的。
數學上類似「物不知數」的問題很多,解法各異。
再看一個問題:
「有一個數,用2除餘1,用3除餘2,用4除餘3,用5除餘4,用6除餘5……用11除餘10。問此數是多少?」
計算這個問題,從正面直接去算比較複雜,因為所餘的數各不相同,很不容易計算。但是,若反過來考慮,把「有餘」變成「不足」,計算就簡單多了。
實際上,用2除餘1,也就是用2除缺1,意思是比2的整數倍少1;用3除餘2,也就是用3除缺1;用4除餘3,也就是用4缺1;以此類推,直到用11除餘10,仍然是用11除缺1。總之,所求的數被從2到11的數去除,都是因為缺1而不能整除。如果添上1呢?就都是它們整數倍了。
根據這道理,可以先求出2、3、4、5、6、7、8、9、10、11的最小公倍數,然後再減1,就是所求的數了。
用短除求最小公倍數得:
2×2×3×5×7×2×3×11=27720
所求的數中最小的數是:
27720-1=27719
符合條件的數不止27719這一個,滿足:
n×27720-1 (n為自然數) 的數都行。