複製鏈接
請複製以下鏈接發送給好友

孫子算經

鎖定
《孫子算經》是中國古代重要的數學著作,成書大約在四、五世紀,也就是大約一千五百年前,作者生平和編寫年不詳。傳本的《孫子算經》共三卷。捲上敍述算籌記數的縱橫相間制度和籌算乘除法,卷中舉例説明籌算分數算法和籌算開平方法。卷下第31題,可謂是後世“雞兔同籠”題的始祖,後來傳到日本,變成“鶴龜算”。書中是這樣敍述的:“今有雉兔同籠,上有三十五頭,下有九十四足,問雉兔各幾何?”這四句話的意思是:有若干只雞兔同在一個籠子裏,從上面數,有35個頭;從下面數,有94只腳。求籠中各有幾隻雞和兔? 此題被義務教育課程標準實驗教科書人教版數學四年級下冊選用,並單獨列為一個單元(第9單元)進行學習。
書    名
孫子算經
類    別
數學
創作年代
四、五世紀
卷    數
三卷
釋    義
《孫子算經》是中國古代重要的數學著作
目    的
討論了度量衡的單位和籌算的制度和方法
語    言
中文

孫子算經內容簡介

孫子算經原序

孫子算經 孫子算經
孫子曰:夫算者:天地之經緯,羣生之園首,五常之本末,陰陽之父母,星辰之建號,三光之表裏,五行之準平,四時之終始,萬物之祖宗,六藝之綱記。稽羣倫之聚散,考二氣之降升,推寒暑之迭運,步遠近之殊同,觀天道精微之兆基,察地理從橫之長短,採神祇之所在,極成敗之符驗。窮道德之理,究性命之情。立規矩,準方圓,謹法度,約尺丈,立權衡,平重輕,剖毫釐,析泰絫。歷億載而不朽,施八極而無疆。散之者,富有餘;背之者,貧且寠。心開者,幼衝而即悟;意閉者,皓首而難精。夫欲學之者,必務量能揆己,志在所專,如是,則焉有不成者哉!
全書共分三卷:

孫子算經上卷

詳細的討論了度量衡的單位和籌算的制度和方法。
度量衡包括長度(度),質量(量),體積/容積(衡)。長度的基本單位是蠶吐出的一根絲(直徑為一忽),以上為十進。小的長度單位包括(50引)。輔助單位包括匹(40尺),步(6尺),畝(240步。古代以方形周長代面積),裏(300步)。
質量的基本單位是一顆黍的質量,以上是(24銖),(即,16兩),(30斤),石(4鈞)。
體積和容積的基本單位是一顆粟的體積。以上是圭(6粟),撮,抄,勺,合,升,鬥,斛。
大數的名稱,一萬萬為億,以上每一萬倍稱為,溝,
圓周率約等於三(周三徑一),根號2約等於1.4(方五斜七)。
以下還記載了白銀,鉛,銅,鐵,玉,石等生產生活和經濟生活中常見的物質的密度。
物質密度表
物質
記載密度
現代測量密度
14兩/立方寸
10.49 g/cm3
11兩/立方寸
3~3.6 g/cm3
7.5兩/立方寸
8.9 g/cm3(純銅。青銅黃銅按比例降低)
9.5兩/立方寸
11.3437 g/cm3
7兩/立方寸
7.86 g/cm3
3兩/立方寸
~3 g/cm3(各不相同)
籌算在春秋戰國時代已經運用,但在古代中國數學著作如算數書九章算術等書中都不曾記載算籌的使用方法;孫子算經第一次詳細地記述籌算的布算規則:“凡算之法,先識其位,一縱十橫,百立千僵,千十相望,百萬相當”,此外又説明用空位表示零。
在進行乘法時,“凡乘之法,重置其位。上下相觀,上位有十步至十,有百步至百,有千步至千。以上命下,所得之數列於中位。言十即過,不滿自如。上位乘訖者先去之。下位乘訖者則俱退之。六不積,五不只。土下相乘,至盡則已。”《孫子算經》明確説明“先識其位”的位值概念,和“逢十進一”的十進位制。
除法法則:“凡除之法:與乘正異乘得在中央,除得在上方,假令六為法,百為實,以六除百,當進之二等,令在正百下。以六除一,則法多而實少,不可除,故當退就十位,以法除實,言一六而折百為四十,故可除。若實多法少,自當百之,不當復退,故或步法十者,置於十百位(頭位有空絕者,法退二位。餘法皆如乘時,實有餘者,以法命之,以法為母, 實餘為子。”)
在此之後記載了穀物換算成精穀物和米飯的經驗比例:粟米打成糲米的體積是五分之三,糲米煮成米飯的體積是二分之五。
第一章的最後是乘法表(從九九八十一開始到一一得一)和每個乘法結果的乘方表。用表格記載下來如下:
《孫子算經》乘法表
乘法(口訣)
乘法答案的平方
平方約去乘法口訣所在行
8×9=72(八九七十二)
5184
5184÷8=648
7×9=63(七九六十三)
3969
3969÷7=567
…………
…………
…………
1×1=1(一一如一)
1(一乘不長)
-

孫子算經中卷

主要是關於分數的應用題,包括面積、體積、等比數列等計算題,大致都在《九章》中論述的範圍之內;

孫子算經下卷

對後世的影響最為深遠,如下卷第31題即著名的“雞兔同籠”問題,後傳至日本,被改為“鶴龜算”。 [1] 
今有雉、兔同籠,上有三十五頭,下有九十四足。問:雉、兔各幾何?答曰:雉二十 三,兔一十二。
術曰:上置三十五頭,下置九十四足。半其足,得四十七,以少減多,再命之,上三 除下三,上五除下五,下有一除上一,下有二除上二,即得。又術曰:上置頭,下置足,半其足,以頭除足,以足除頭,即得。
算法譯文:第一行放好頭的數目,第二行放好腳的數目。將腳的數目除以二,得四十七。以較少的頭數減較多的”腳數的一半“,得十二(知道這就是兔的數目),將第一行的算籌數目根據第二行得出的數目依次取去,即得雞的數目。
另一種算法是:第一行放頭的數目,第二行放腳的數目,將腳的數目除以二,從腳的數目的一半減去頭的數目,再從頭的數目減去剛才所獲得的結果,即得雞的數目。
下卷27題則是”雞兔同籠“的一種推廣。即使是頭多於一個的奇異生物也能計算它們的數量。
今有獸,六首四足;禽,四首二足,上有七十六首,下有四十六足。問:禽、獸各幾何?答曰:八獸、七禽。
術曰:倍足以減首,餘半之,即獸;以四乘獸,減足,餘半之,即禽。
算法譯文:將腳的總數乘以二,減去頭的數目,差除以二,得到獸的數目。將獸的數目乘以四,減去腳的數目,除以二,得到禽的數目。
下卷第28題“物不知數”為後來的“大衍求一術”的起源,被看作是中國數學史上最有創造性地成就之一,稱為中國餘數定理:今有物,不知其數。三三數之,剩二;五五數之,剩三;七七數之,剩二。問:物幾 何?答曰:二十三。
術曰:三三數之,剩二,置一百四十;五五數之,剩三,置六十三;七七數之,剩二 ,置三十。並之,得二百三十三,以二百一十減之,即得。凡三三數之,剩一,則置七十 ;五五數之,剩一,則置二十一;七七數之,剩一,則置十五。一百六以上,以一百五 減之,即得。
下卷最後一題還提供了一種卜算胎兒性別的”方法“,頗有些現代”校驗算法“的旨趣,一併記之如下:
今有孕婦,行年二十九歲。難九月,未知所生?答曰:生男。
術曰:置四十九加難月,減行年,所餘以天除一,地除二,人除三,四時除四,五行除五,六律除六,七星除七,八風除八,九州除九。其不盡者,奇則為男,耦則為女。
算法譯文:基數七七四十九,加上孕婦的孕期(九月,得五十八),減去孕婦的年齡(二十九,得二十九)。計算結果連續除以一到九的整數。如果最後餘數的和是奇數就是生男,偶數就是生女。本例的結果是0、1、2、1、4、5、1、5、2,和為21,所以孕婦生的是男孩。
《孫子算經》有新加坡大學數學教授藍麗蓉的英譯本。

孫子算經簡介

孫子算經 孫子算經
具有重大意義的是卷下第26題:“今有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二,問物幾何?答曰:‘二十三’”。《孫子算經》不但提供了答案,而且還給出瞭解法。南宋大數學家秦九韶則進一步開創了對一次同餘式理論的研究工作,推廣“物不知數”的問題。德國數學家高斯[K.F. Gauss.公元1777-1855年]於公元1801年出版的《算術探究》中明確地寫出了上述定理。公元1852年,英國基督教士偉烈亞士[Alexander Wylie公元1815-1887年]將《孫子算經》“物不知數”問題的解法傳到歐洲,公元1874年馬蒂生[L.Mathiesen]指出孫子的解法符合高斯的定理,從而在西方的數學史裏將這一個定理稱為“中國的剩餘定理”[Chinese remainder theorem]。另外還有一道,曰:“巍巍古寺在山林,不知寺內幾多僧。三百六十四隻碗,看看用盡不差爭。三人共食一碗飯,四人共吃一碗羹。請問先生明算者,算來寺內幾多僧。”

孫子算經社會影響

孫子算經,中國南北朝數術著作,《算經十書》之一。

孫子算經剩餘定理

孫子算經
孫子算經(12張)
在我國古代勞動人民中,長期流傳着“隔牆算”、“剪管術”、“秦王暗點兵”等數學遊戲。有一首“孫子歌”,甚至遠渡重洋,輸入日本:
“三人同行七十稀,五樹梅花廿一枝,
七子團圓正半月,除百零五便得知。”
這些饒有趣味數學遊戲,以各種不同形式,介紹世界聞名的“孫子問題”的解法,通俗地反映了中國古代數學一項卓越的成就。“孫子問題”在現代數論中是一個一次同餘問題,它最早出現在我國公元四世紀的數學著作《孫子算經》中。《孫子算經》卷下“物不知數”題説:有物不知其數,三個一數餘二,五個一數餘三,七個一數又餘二,問該物總數幾何?顯然,這相當於求不定方程組
N=3x+2,N=5y+3,N=7z+2
的正整數解N,或用現代數論符號表示,等價幹解下列的一次同餘組。
N=2(mod3);N=3(mod5);N=2(mod7)
《孫子算經》所給答案是N=23。由於孫子問題數據比較簡單,這個答數通過試算也可以得到。但是《孫子算經》並不是這樣做的。“物不知數”題的術文指出解題的方法多三三數之,取數七十,與餘數二相乘;五五數之,取數二十一,與餘數三相乘;七七數之,取數十五,與餘數二相乘。將諸乘積相加,然後減去一百零五的倍數。列成算式就是:
N=70×2+21×3+15×2-2×105=23。
這裏105是模數3、5、7的最小公倍數,容易看出,《孫子算經》給出的是符合條件的最小正整數。對於一般餘數的情形,《孫子算經》術文指出,只要把上述算法中的餘數2、3、2分別換成新的餘數就行了。以R1、R2、R3表示這些餘數,那麼《孫子算經》相當於給出公式
N=70×R1+21×R2+15×R3-P×105(p是整數)。
孫子算法的關鍵,在於70、21和15這三個數的確定。後來流傳的《孫子歌》中所説“七十稀”、“廿一技”和“正半月”,就是暗指這三個關鍵的數字。《孫子算經》沒有説明這三個數的來歷。實際上,它們具有如下特性:
也就是説,這三個數可以從最小公倍數M=3×5×7=105中各約去模數3、5、7後,再分別乘以整數2、1、1而得到。假令k1=2,K2=1,K3=1,那麼整數Ki(i=1,2,3)的選取使所得到的三數70、21、15被相應模數相除的時候餘數都是1。由此出發,立即可以推出,在餘數是R1、R2、R3的情況下的情況。
應用上述推理,可以完全類似地把孫子算法推廣到一般情形:設有一數N,分別被兩兩互素的幾個數a1、a2、……an相除得餘數R1、R2、……Rn,即
N≡Ri(mod ai)(i=1、2、……n),
只需求出一組數K,使滿足
1(mod ai)(i=1、2、……n),
那麼適合已給一次同餘組的最小正數解是
(P是整數,M=a1×a2×……×an),
這就是現代數論中著名的剩餘定理。如上所説,它的基本形式已經包含在《孫子算經》“物不知數”題的解法之中。不過《孫子算經》沒有明確地表述這個一般的定理。
孫子問題出現在公元四世紀的中國算書中,這並不是偶然的。我國古代天文曆法資料表明,一次同餘問題的研究,明顯地受到天文、曆法需要的推動,特別是和古代曆法中所謂“上元積年”的計算密切相關。大家知道,一部曆法,需要規定一個起算時間,我國古代歷算家把這個起點叫做“曆元”或“上元”,並且把從曆元到編歷年所累積的時間叫做“上元積年”。上元積年的推算需要求解一組一次同餘式。以公元三世紀三國時期魏國施行的《景初歷》做例,這部曆法規定以冬至、朔旦朔日子夜)和甲子日零時會合的時刻作為曆元。設a是一回歸年日數,b是一朔望月日數,當年冬至距甲子日零時是R1日,離平朔時刻是R2日,那麼《景初歷》上元積元數N就是同餘組的解。
aN≡Ri(mod 60)≡R2(mod b)
到了南北朝時期,祖沖之大明曆》(公元462年)更要求曆元必須同時是甲子年的開始,而且“日月合璧”、“五星聯珠”(就是日、月、五大行星處在同一方位),月亮又恰好行經它的近地點和升交點。這樣的條件下推算上元積年,就相當於要求解十個同餘式了。天文曆法數據一般又都十分龐雜,所以,在《孫子算經》成書前後的魏晉南北朝時期,我國的天文歷算家無疑已經能夠求解形式比《孫子算經》“物不知數”題複雜得多的一次同餘式,因而必定掌握了按一定程序計算一次同餘式的方法。《孫子算經》比例題的形式總結、反映了這一事實。以後天文歷算家長期沿用孫子算法推算上元積年,這中間肯定會引起更加深入的探討。到公元十三世紀,大數學家秦九韶集前法之大成,終於在一次同餘式的研究上獲得了超越前人的輝煌成果。
秦九韶,字道古,生活於南宋時期,自幼喜好數學,經過長期積累和苦心鑽研,於公元1247年寫成《數書九章》。這部中世紀的數學傑作,在許多方面都有創造,其中求解一次同餘組的“大衍求一術”和求高次方程數值解的“正負開方術”,更是具有世界意義的成就。
這裏主要介紹秦九韶對一次同餘論的偉大貢獻。
秦九韶在《數書九章》中明確地系統地敍述了求解一次同餘組
的一般計算步驟。秦的方法,正是前述的剩餘定理。我們知道,剩餘定理把一般的一次同餘問題歸結為滿足條件的一組數Ki,的選定。秦九韶給這些數起名叫“乘率”,並且在《數書九章》卷一“大衍總術”中詳載了計算乘率的方法——“大衍求一術”。
為了介紹“大衍求一術”,以任一乘率ki的計算作例。如果Gi=>ai,秦九韶首先令ai除Gi,求得餘數gi
Gi≡gi(mod ai),
於是 kiGi≡Kigi(mod ai),
但是因為 kiGi≡1(mod ai),
所以問題歸結為求ki使適合kigi≡1(mod ai)。秦九韶把ai叫“定數”,gi叫“奇數”,他的“大衍求一術”,用現代語言解釋,實際就是把奇數gi和定數ai輾轉相除,相繼得商數q1、q2、……qn和餘數r1、r2、……rn,在輾轉相除的時候,隨即算出下面右列的c值:
秦九韶指出,當rn=1而n是偶數的時候,最後得到的cn就是所求乘率ki。如果rn=1而n是奇數,那麼把rn-1和rn相除,形式上令qn+1=rn-1-1,那麼餘數rn+1仍舊是1,再作cn+1=qn+1cn+cn-1,qn+1=rn-1-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年,美國出版的一部數學史專著《十三世紀的中國數學》中,系統介紹了中國學者在一次同餘論方面的成就,作者力勃雷希(比利時人)在評論秦九韶的貢獻的時候説道:“秦九韶在不定分析方面的著作時代頗早,考慮到這一點,我們就會看到,薩頓稱秦九韶為‘他那個民族、他那個時代、並且確實也是所有時代最偉大的數學家之一’,是毫不誇張的。”
印度學者對一次同餘論也有過重要貢獻。從公元六世紀到十二世紀,他們發展了一種稱為“庫塔卡”的算法,用來求解和一次同餘式等價的不定方程組。“庫塔卡”法出現在孫子算法之後,印度數學家婆羅門復多(七世紀)、摩柯吠羅(九世紀)等人的著作中,都有和物不知數題相同的一次同餘問題。這當然不是要藉此斷言“庫塔卡”法一定受到了孫子算法的影響,但是有人(如萬海依等)硬説中自的“大衍求一術”來源於“庫塔卡”,就是毫無根據的妄説了。萬海依居然把中國算法中數碼從左到右橫寫作為“大衍術”受印度影響的重要根據。大家知道,中國古代至遲從春秋戰國時期就開始使用算籌記數,我們今天還可以從現存的公元前三世紀的貨幣上看到這種從左到右的記數方法。由此可見,萬海依的論點多麼荒唐可笑。中國古代數學家對一次同餘論的研究有明顯的獨創性和繼承性,“大衍求一術”在世界數學史上的崇高地位是毋容置疑的,正因為這樣,在西方數學史著作中,一直公正地稱求解一次同餘組的剩餘定理為“中國剩餘定理”。

孫子算經蕩杯問題

在中國古算書中,《孫子算經》一直在我國數史佔有重要的地位,其中的“盈不足術”、“蕩杯問題”等都有着許多有趣而又不乏技巧算術程式。
孫子算經.卷下第十七問給我們描述的就是著名的“蕩杯問題”的程式。題曰:“今有婦人河上蕩杯。津吏問曰:‘杯何以多?’婦人曰:‘有客。’津吏曰:‘客幾何?’婦人曰:‘二人共飯,三人共羹,四人共肉,凡用杯六十五。不知客幾何?”
很明顯,這裏告訴這次洗碗事件,要處理的是65個碗共有多少人的問題。其中有能瞭解客數的信息是2人共碗飯,3人共碗羹,4人共碗肉。通過這幾個數值,很自然就能解決客數問題。因為客數是固定值,因此將其列成今式為N/2+N/3+N/4=65,易得客數六十人。
而該題的解法與今解如出一轍,其有“術曰:置六十五杯,以一十二乘之,得七百八十,以十三除之,即得”可證。
參考資料
  • 1.    據藤原松三郎之《日本數學史概要》