剩餘定理

剩餘定理

《孫子算經》所給答案是N=23。 在第一組數中找出“除以7餘2”的最小數——30; 在第三組數中找出“除以3餘2”的最小數——35;

也稱中國剩餘定理,孫子定理。是中國先聖們對一次同餘論的重大貢獻。.

問題敘述

在我國古代勞動人民中,長期流傳著“隔牆算”、“剪管術”、“秦王暗點兵”等數學遊戲。
我國公元四世紀的數學著作《孫子算經》卷下記載:
物不知數
今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?
即,求一個數,除以3餘2,除以5餘3,除以7餘2。
這個被稱做孫子問題

孫子算經之解法

孫子算經》所給答案是N=23。由於孫子問題數據比較簡單,這個答數通過試算也可以得到。但是《孫子算經》並不是這樣做的。
物不知數”題的術文指出的解法為:
三三數之,取數七十,與餘數二相乘;五五數之,取數二十一,與餘數三相乘;七七數之,取數十五,與餘數二相乘。將諸乘積相加,然後減去一百零五的倍數。列成算式就是:
N=70×2+21×3+15×2-2×105。
有一首口訣就描述了孫子問題的解法:
孫子歌
三人同行七十稀,五樹梅花廿一枝,
七子團圓正半月,除百令五便得知。
孫子算法的關鍵,在於70、21和15這三個數的確定。後來流傳的《孫子歌》中所說“七十稀”、“廿一枝”和“正半月”,就是暗指這三個關鍵的數字。《孫子算經》沒有說明這三個數的來歷。

現代數論求解

孫子問題在現代數論中是一個一次同餘問題,顯然,這相當於求不定方程組
N=3x+2
N=5y+3
N=7z+2
的正整數解N,或用現代數論符號表示,等價於解下列的一次同餘組:
N 2(mod3) 3(mod5) 2(mod7)②
孫子問題求解過程如下:

最低公倍數

在第一組數中找出“除以7餘2”的最小數——30;
在第二組數中找出“除以5餘3”的最小數——63;
在第三組數中找出“除以3餘2”的最小數——35;
則有,30+63+35 = 128 一定是一個符合“被3除餘2,被5除餘3,被7除餘2”的數。但不一定是最小的。
再求128除以105(即3,5,7的最低公倍數)的餘數即得23。
為了一般化問題的解法,先來看一個簡單的結論:
如果整數 a 除以整數 b 的餘數是 1,那么 a 的 2 倍,3 倍,4 倍……b-1 倍除以 b 的餘數分別是 1*1,2*1,3*1,4*1,......和(b-1)*1。
例如:15÷7=2……餘1,那么:
2*15÷7=4……余 2 (=2*1)
3*15÷7=6……余 3 (=3*1)
4*15÷7=8……余 4 (=4*1)
……
6*15÷7=12……余 6 (=6*1)
基於以上結論,可以如是求解(仍要看上圖):
在第一組中找出 ”除以7餘1“ 的最小數--15
在第二組中找出 “除以5餘1” 的最小數--21
在第三組中找出 “除以3餘1" 的最小數--70
要找的數是 “除以7餘2,除以5餘3,除以3餘2” ,因此一個答案就是
15*2 + 21*3 + 70*2 = 233
要求最小的那個數,只要求233除以105(即3,5,7的最低公倍數)的餘數,即23。

背景介紹

孫子問題出現在公元四世紀的中國算書中,這並不是偶然的。我國古代天文曆法資料表明,一次同餘問題的研究,明顯地受到天文、曆法需要的推動,特別是和 古代曆法中所謂“上元積年”的計算密切相關。大家知道,一部曆法,需要規定一個起算時間,我國古代歷算家把這個起點叫做“曆元”或“上元”,並且把從曆元到編歷 年所累積的時間叫做“上元積年”。上元積年的推算需要求解一組一次同餘式。以公元三世紀三國時期魏國施行的《景初歷》做例,這部曆法規定以冬至、朔旦(朔日子夜)和甲子日零時會合的時刻作為曆元。設a是一回歸年日數,b是一朔望月日數,當年冬至距甲子日零時是R1日,離平朔時刻是R2日,那么《景初歷》上元積元數N就是同餘組
aN≡Ri(mod60)≡R2(modb)
的解。到了南北朝時期,祖沖之《大明曆》(公元462年)更要求曆元必須同時是甲子年的開始,而且“日月合璧”、“五星聯珠”(就是日、月、五大行星處在同一方位),月亮又恰好行經它的近地點和升交點。這樣的條件下推算上元積年,就相當於要求解十個同餘式了。天文曆法數據一般又都十分龐雜,所以,在《孫子算經》成書前後的魏晉南北朝時期,我國的天文歷算家無疑已經能夠求解形式比《孫子算經》“物不知數”題複雜得多的一次同餘式,因而必定掌握了按一定程式計算一次同餘式的方法。《孫子算經》比例題的形式總結、反映了這一事實。以後天文歷算家長期沿用孫子算法推算上元積年,這中間肯定會引起更加深入的探討。到公元十三世紀,大數學家秦九韶集前法之大成,終於在一次同餘式的研究上獲得了超越前人的輝煌成果。
秦九韶,字道古,生活於南宋時期,自幼喜好數學,經過長期積累和苦心鑽研,於公元1247年寫成《數書九章》。這部中世紀的數學傑作,在許多方面都有創造,其中求解一次同餘組的“大衍求一術”和求高次方程數值解的“正負開方術”,更是具有世界意義的成就。
這裡主要介紹秦九韶對一次同餘論的偉大貢獻。
秦九韶在《數書九章》中明確地系統地敘述了求解一次同餘組的一般計算步驟。秦的方法,正是前述的剩餘定理。我們知道,剩餘定理把一般的一
的一組數Ki的選定。秦九韶給這些數起名叫“乘率”,並且在《數書九章》卷一“大衍總術”中詳載了計算乘率的方法——“大衍求一術”。
為了介紹“大衍求一術”,我們以任一乘率ki的計算作例。
如果Gi≡gi(modai),
於是kiGi≡Kigi(modai),
但是因為kiGi≡1(modai),
所以問題歸結為求ki使適合kigi≡1(modai)。秦九韶把ai叫“定數”,gi叫“奇數”,他的“大衍求一術”,用現代語言解釋,實際就是把奇數 gi和定數ai輾轉相除,相繼得商數q1、q2、……qn和餘數r1、r2、……rn,在輾轉相除的時候,隨即算出下面右列的c值:
1,20
定ai
27
1,
gi
1,20
c1=q1,
r2
1,7
(q1)
(q2)
c2=c1q2+1,
r2
3,6
c1,
r1
1,7
cn-2,
rn-2
3,6
cn-1=cn-2qn-1+cn-3,
rn-1
4,1
(qn-1)
(qn)
cn=cn-1qn+cn-2,
1
23,1
cn-1,
rn-1
4,1
秦九韶指出,當rn=1而n是偶數的時候,最後得到的cn就是所求乘率ki。如果r1=1而n是奇數,那么把rn-1和rn相除,形式上令qn+1=rn- 1-1,那么餘數rn+1仍舊是1,再作cn+1=qn+1Cn+Cn-1,這時n+1是偶數,cn+1就是所求的ki。不論哪種情形,最後一步都出現餘數1,整個計算到此終止,秦九韶因此把他的方法叫做“求一術”(至於“大衍”的意思,秦九韶本人在《數書九章》序中把它和《周易》“大衍之數”相附會)。可以證明,秦九韶這一算法是完全正確,十分嚴密的式。
在秦九韶那個時代,計算仍然使用算籌。秦九韶在一個小方盤上,右上布置奇數g,右下布置定數a,左上置1(他叫它做“天元1”),然後在右行上下互動以少除多,所得商數和左上(或下)相乘併入左下(或上),直到右上方出現1為止。下頁就是秦九韶的一般籌算圖式,右邊是一個數字例子(g=20,a=27,K= c4=23)。
秦九韶在《數書九章》中採集了大量例題,如“古歷會積”、“積尺尋源”、“推計土功”、“程行計地”等等,廣泛套用大衍求一術來解決曆法、工程、賦役和軍旅等實際問題。在這些實際問題中,模數ai並不總是兩兩互素的整數。秦九韶區分了“元數”(ai是整數)、“收數”(ai是小數)、“通數”(ai是分數)等不同情形,並且對每種情形給出了處理方法。 “大衍總術”把“收數”和“通數”化成“元數”的情形來計算,而對於元數不兩兩互素的情形,給出了可靠的程式,適當選取那些元數的因子作定數而把問題歸結為兩兩互素的情形。所有這些系統的理論,周密的考慮,即使以今天的眼光看來也很不簡單,充分顯示了秦九韶高超的數學水平和計算技巧。
秦九韶小時曾跟隨他父親到南宋京城杭州,向太史局(主管天文曆法的機構)的官員學習天文曆法,“大衍求一術”很可能就是他總結天文曆法計算上元積年方法的結果。但是“大衍求一術”似乎沒有為他同時代的人所充分理解。明中葉以後幾乎失傳。一直到清代,“大衍求一術”又重新被發掘出來,引起了許多學者(張敦仁、李銳、駱騰鳳、黃宗憲等)的興趣。他們對“大衍求一術” 進行了解釋、改進和簡化,其中黃宗憲《求一術通解》對模數非兩兩互素的情形給出了更加簡明的方法,但是時代已是晚清。
從《孫子算經》“物不知數”題到秦九韶的“大衍求一術”,我國古代數學家對一次同餘式的研究,不僅在中國數學史上而且在世界數學史上占有光榮的地位。在歐洲,最早接觸一次同餘式的,是和秦九韶同時代的義大利數學家裴波那契(1170—1250),他在《算法之書》中給出了兩個一次同餘問題,但是沒有一般的算法。這兩個問題從形式到數據都和孫子物不知數題相仿,整個水平沒有超過《孫子算經》。直到十八、十九世紀,大數學家歐拉(1707—1783)於公元1743年、高斯(1777—1855)於公元1801年對一般一次同餘式進行了詳細研究,才重新獲得和秦九韶“大衍求一術”相同的定理,並且對模數兩兩互素的情形給出了嚴格證明。歐拉和高斯事先並不知道中國人的工作。公元1852年英國傳教士偉烈亞力(1815—1887)發表《中國科學摘記》,介紹了《孫子算經》物不知數題和秦九韶的解法,引起了歐洲學者的重視。1876年,德國馬蒂生(1830—1906)首先指出孫子問題的解法和高斯方法一致,當時德國著名數學史家康托(1829—1920)看到馬蒂生的文章以後,高度評價了“大衍術”,並且稱讚發現這一方法的中國數學家是“最幸運的天才”。直到今天,“大衍求一術”仍然引起西方數學史家濃厚的研究興趣。如1973年,美國出版的一部數學史專著《十三世紀的中國數學》中,系統介紹了中國學者在一次同餘論方面的成就,作者力勃雷希(比利時人)在評論秦九韶的貢獻的時候說道:“秦九韶在不定分析方面的著作時代頗早,考慮到這一點,我們就會看到,薩頓②稱秦九韶為‘他那個民族、他那個時代、並且確實也是所有時代最偉大的數學家之一’,是毫不誇張的。”
印度學者對一次同餘論也有過重要貢獻。從公元六世紀到十二世紀,他們發展了一種稱為“庫塔卡”的算法,用來求解和一次同餘式等價的不定方程組。“庫塔卡”法出現在孫子算法之後,印度數學家婆羅門笈多(七世紀)、摩柯吠羅(九世紀)等人的著作中,都有和物不知數題相同的一次同餘問題。這當然不是要藉此斷言“庫塔卡”法一定受到了孫子算法的影響,但是有人(如萬海依等)硬說中國的“大衍求一術”來源於“庫塔卡”,就是毫無根據的妄說了。萬海依居然把中國算法中數碼從左到右橫寫作為“大衍術”受印度影響的重要根據。大家知道,中國古代至遲從春秋戰國時期就開始使用算籌記數,我們今天還可以從現存的公元前三世紀的貨幣上看到這種從左到右的記數方法。由此可見,萬海依的論點多么荒唐可笑。中國古代數學家對一次同餘論的研究有明顯的獨創性和繼承性,“大衍求一術”在世界數學史上的崇高地位是毋容置疑的,正因為這樣,在西方數學史著作中,一直公正地稱求解一次同餘組的剩餘定理為“中國剩餘定理”。

相關詞條

相關搜尋

熱門詞條

聯絡我們