《孫子算經》,相傳為春秋時代作兵書十三篇的孫武子所作。但因為原書在明代已經亡佚,所以該書作者“孫子”究竟是誰,已經無從考證。現在所能見到的《孫子算經》,是清代乾隆年間,由安徽數學家戴震從《永樂大典》中輯出的。
書中卷下載有“長安洛陽相去九百里”及“今有佛書凡二十九章”。由於長安是西漢建國時所定京都的名稱,而洛陽是東漢的首都,佛書開始傳入中國在東漢明帝永平八年(公元65年)。由此,戴震認為“孫子”其人,不能早於漢明帝時代。又據《夏侯陽算經》序言稱:五曹、孫子述作滋多,甄鸞、劉徽為之作注。劉徽是三世紀人,他為《九章算術》所作的注,發表於公元263年。綜上所述,《孫子算經》成書年代,大致可以推斷在公元66年至270年之間。
《孫子算經》共分上、中、下三卷。上卷論度量衡各種規定及算籌用法,是算術的基本知識。這是中國記載算籌用法的、所能見到的最早的算書。
算籌用法有“凡算之法,先識其位,一縱十橫百立千僵,千十相望,萬百相當。”就是說個位、百位,萬位,算籌縱排。十位、千位,十萬位,算籌橫排。例如23421五位數用算籌排列當為 ▏▏≡ ▏▏▏▏= ▏
這樣的排列遇到某一位沒有數字就空一位,以後加一點(一個小石子),以後加一個圈。“O”號的發現和使用,便從此而得。
中卷是講應用題,包括面積、體積以及等差、等比數列,大致不出《九章算術》範圍,但有開平方的步驟,為後世所遵循。又有“雉兔同籠”(即雞兔同籠)問題常見於初級算書。
下卷有測算胎兒的性別及患重病人的吉凶,阮元認為鄙陋荒誕,當為後人妄增,未必是孫子原作。但下卷有一道題,是“大衍求一術”的起源,為中算史放一異彩。
下卷第26題:“今有物不知其數。三三數之剩2,五五數之剩3,七七數之剩2,問物幾何?答曰:二十三。
術曰:三三數之剩2,置一百四十,五五數之剩3,置六十三,七七數之剩2,置三十。並之得二百三十三,以二百一十減之即得。
這一段話用現在數學的語言來說,就是:某數用3除餘2,用5除餘3,用7除餘2,求其數。
解:3除的餘數用70乘之,5除的餘數用21乘之,7除的餘數用15乘之,把三個乘積相加,減去105的倍數。即
2×70=140,3×21=63,2×15=30
140+63+30=233
233-2×105=233-210=23
宋、周密在所著《志雅堂雜抄》,卷下“陰陽算術”條有“鬼谷算”,敘述《孫子算經》“物不知其數”一題及其解法,編成四句詩:
三歲孩兒七十稀,五留廿一事尤奇,七度上元重相會,寒食清明便可知。
第一句是說,3除的餘數用70乘之,第二句是說5除的餘數用21乘之,第三句的上元是農曆正月十五日,是說7除的餘數用15乘之。第四句寒食節是清明前一天,由冬至到清明是106日,所以冬至到寒食節是105天。上面三個乘積相加再減去105的倍數。
上面四句詩詞義隱晦。明程大位在所著《演算法統宗》裡換為下列四句:
三人同行七十稀,五樹梅花廿一枝,七子團圓正半月,除百另五便得知。
程大位這四句詩廣泛流傳幾乎家喻戶曉。
上面的除數是3、5、7三個數,105=3×5×7。5除的餘數用21乘,21=3×7;7除的餘數用15乘,15=3×5。為什麼3除的餘數不用35乘而用70乘呢?難就難在這一點,妙也就妙在這一點。原來21被5除,餘數是1。15被7除,餘數也是1,獨35被3除的餘數不是1,只有2×35=70而70被3除的餘數是1。從下面可以知道乘數2叫做乘率。從70、21、15三個數來看,有:
70=3的倍數+1=5的倍數=7的倍數
21=3的倍數=5的倍數+1=7的倍數
15=3的倍數=5的倍數=7的倍數+1
2×70=3的倍數+2=5的倍數=7的倍數
3×21=3的倍數=5的倍數+3=7的倍數
2×15=3的倍數=5的倍數=7的倍數+2
相加得:233=3的倍數+2=5的倍數+3=7的倍數+2
233-2×105=233-210=23。
宋·秦九韶作《數書九章》,其中一、二兩卷是大衍類就孫子“物不知數”問題發展為“大衍求一術”。“大衍”是秦氏給的名稱;“求一”是這類問題解題的關鍵。國外稱為“中國剩餘定理”或“孫子定理”。這是中國數學最有獨創性成就之一。繼秦氏而後學者多有研究,改進其方法,擴大其應用。如宋·周密之“鬼谷算”,楊輝之“剪管術”;明·嚴恭的“管表”,周述學的“總分”,清·張敦仁的《求一術》三卷(1803年),駱騰鳳的《藝遊錄》二卷(1843年),時日淳的《求一術指》一卷,黃宗憲的《求一術通解》二卷(1874年),以及現代著名數學家李儼、錢寶琮、華羅庚、吳文俊等,多所闡發。其中華羅庚教授所著《從孫子的“神奇妙算談起”》一書深入淺出,引人入勝。國外如高斯、偉烈亞力、關孝和、三上義夫等亦各有論述。
“大衍求一術”歷代多用文字敘述,沒有規定符號。例如,清·時日淳在所著《求一術指》中稱列全數為泛母,約泛母為定母,定母連乘為衍母,衍母各除為衍數,……乘率乘衍數為用數。用數乘剩數所得的各總,各總並之為總數,滿衍母去之得所求數。公元1925年5月《科學》雜誌第十卷第二期登載徐震池的文章“商餘求原法”採用符號:
其中N為所求數,A、B、C等為除數,a、b、c等為餘數。本文采用這種符號。現在綜合秦九韶、時日淳、黃宗憲三家的方法,介紹“大衍求一術”如下:
(一)各除數彼此之間沒有公約數(互質數)叫做“定母”,各定母連乘為“衍母”,在衍母中拿去一個定母其餘各定母相乘為“銜數”。如是,有多少個定母就有多少個衍數。用定母去除相當的衍數,如果餘數不是1,就要覓取一數a乘衍數,務使被定母除後餘數為1,這個數a叫做“乘率”,有多少個衍數,就要有多少個乘率。乘率乘衍數叫做“用數”,用數乘剩數(題給的餘數)叫做“各總”,各總合並,叫做“總數”,總數減去衍母倍數(要小於衍母)就得所求數 N.
用孫子問題作為例1,對上面術語作一說明,
(二)各除數不是互質數叫做泛母。將各泛母的質因子析出,有相同的質因子則保留其指數最大的加上△記號(例如4、6兩泛母,析因後保留4、3。又如9、8、6三泛母,經析因後保留9、8、1,由於1作除數不起作用,第三項為廢位),由此而得定母仍依(一)求N。
求乘率的方法是“大衍求一術”的關鍵。要善於觀察,化繁為簡,如果不易觀察,可用“輾轉相除法”從而求出乘率而使餘數為1。
例、65a+83得餘數為1,求a、
解:83-65=18,65-3×18=11 即 65-3×(83-65)=11
即 4×65-3×83=11
5×(4×65-3×83)-3×(83-65)=23×65-18×83=1 (注:5×11-3×18=1)。
由是得乘率為23。下面再用例題說明。
現說明上面三個乘率的求法。
144=35×4+4而4×9-35=1,故乘率為9。(注:為簡便起見,只就第一次餘數考慮。事實上有144×9=35×4×9+4×9=35×36+4×9=35×37+4×9-35=35×37+1。)
315=16×19+11而 11×3-16×2=1 ∴ 乘率為3,
560=9×60+20而20×5-9×11=1 ∴ 乘率為5。
本題三個泛母皆有因子7,為了保證各定母間沒有公約數,只能在某一項保留7。前面把7留在第一項,下面把7留在第三項,可以看出這不影響所求數N:
這裡的三個乘率的探求法,讀者可以作為練習。
上面兩例說明了“大衍求一術”的計算方法。“大衍求一術”曾應用於天文曆法測算上。自唐· 麟德歷以後至元·授時歷以前各代曆法家,用求一術以調正朔閏。郭守敬專重測驗,廢古法不用,全賴於秦九韶備載於所著《數書九章》。
華羅庚教授指出:中國剩餘定理不僅在古代數學史上有地位,而且它的解法原則,在近代數學史上還佔有重要的地位;在電子計算機的設計中,也有重要的應用。
關於“大銜求一術”的問題,還可用同餘式的記法。例1可記作;N=2(mod 3), N=3(mod 5), N=2(mod 7),求 N也可以用不定方程記之。求解;x=3a+2=5b+3=7c+2。
但用同餘式解法與不定方程解法皆未能涉及“求一”的原則。
“求一術”是中國獨創的數學理論,千餘年來,中外學者,研究未衰,應用廣泛,且方興未艾。希望數學工作者多加研究,旁搜遠紹,發揚國光,為四化建設,添磚添瓦。
《孫子算經》,相傳為春秋時代作兵書十三篇的孫武子所作。但因為原書在明代已經亡佚,所以該書作者“孫子”究竟是誰,已經無從考證。現在所能見到的《孫子算經》,是清代乾隆年間,由安徽數學家戴震從《永樂大典》中輯出的。
書中卷下載有“長安洛陽相去九百里”及“今有佛書凡二十九章”。由於長安是西漢建國時所定京都的名稱,而洛陽是東漢的首都,佛書開始傳入中國在東漢明帝永平八年(公元65年)。由此,戴震認為“孫子”其人,不能早於漢明帝時代。又據《夏侯陽算經》序言稱:五曹、孫子述作滋多,甄鸞、劉徽為之作注。劉徽是三世紀人,他為《九章算術》所作的注,發表於公元263年。綜上所述,《孫子算經》成書年代,大致可以推斷在公元66年至270年之間。
《孫子算經》共分上、中、下三卷。上卷論度量衡各種規定及算籌用法,是算術的基本知識。這是中國記載算籌用法的、所能見到的最早的算書。
算籌用法有“凡算之法,先識其位,一縱十橫百立千僵,千十相望,萬百相當。”就是說個位、百位,萬位,算籌縱排。十位、千位,十萬位,算籌橫排。例如23421五位數用算籌排列當為 ▏▏≡ ▏▏▏▏= ▏
這樣的排列遇到某一位沒有數字就空一位,以後加一點(一個小石子),以後加一個圈。“O”號的發現和使用,便從此而得。
中卷是講應用題,包括面積、體積以及等差、等比數列,大致不出《九章算術》範圍,但有開平方的步驟,為後世所遵循。又有“雉兔同籠”(即雞兔同籠)問題常見於初級算書。
下卷有測算胎兒的性別及患重病人的吉凶,阮元認為鄙陋荒誕,當為後人妄增,未必是孫子原作。但下卷有一道題,是“大衍求一術”的起源,為中算史放一異彩。
下卷第26題:“今有物不知其數。三三數之剩2,五五數之剩3,七七數之剩2,問物幾何?答曰:二十三。
術曰:三三數之剩2,置一百四十,五五數之剩3,置六十三,七七數之剩2,置三十。並之得二百三十三,以二百一十減之即得。
這一段話用現在數學的語言來說,就是:某數用3除餘2,用5除餘3,用7除餘2,求其數。
解:3除的餘數用70乘之,5除的餘數用21乘之,7除的餘數用15乘之,把三個乘積相加,減去105的倍數。即
2×70=140,3×21=63,2×15=30
140+63+30=233
233-2×105=233-210=23
宋、周密在所著《志雅堂雜抄》,卷下“陰陽算術”條有“鬼谷算”,敘述《孫子算經》“物不知其數”一題及其解法,編成四句詩:
三歲孩兒七十稀,五留廿一事尤奇,七度上元重相會,寒食清明便可知。
第一句是說,3除的餘數用70乘之,第二句是說5除的餘數用21乘之,第三句的上元是農曆正月十五日,是說7除的餘數用15乘之。第四句寒食節是清明前一天,由冬至到清明是106日,所以冬至到寒食節是105天。上面三個乘積相加再減去105的倍數。
上面四句詩詞義隱晦。明程大位在所著《演算法統宗》裡換為下列四句:
三人同行七十稀,五樹梅花廿一枝,七子團圓正半月,除百另五便得知。
程大位這四句詩廣泛流傳幾乎家喻戶曉。
上面的除數是3、5、7三個數,105=3×5×7。5除的餘數用21乘,21=3×7;7除的餘數用15乘,15=3×5。為什麼3除的餘數不用35乘而用70乘呢?難就難在這一點,妙也就妙在這一點。原來21被5除,餘數是1。15被7除,餘數也是1,獨35被3除的餘數不是1,只有2×35=70而70被3除的餘數是1。從下面可以知道乘數2叫做乘率。從70、21、15三個數來看,有:
70=3的倍數+1=5的倍數=7的倍數
21=3的倍數=5的倍數+1=7的倍數
15=3的倍數=5的倍數=7的倍數+1
2×70=3的倍數+2=5的倍數=7的倍數
3×21=3的倍數=5的倍數+3=7的倍數
2×15=3的倍數=5的倍數=7的倍數+2
相加得:233=3的倍數+2=5的倍數+3=7的倍數+2
233-2×105=233-210=23。
宋·秦九韶作《數書九章》,其中一、二兩卷是大衍類就孫子“物不知數”問題發展為“大衍求一術”。“大衍”是秦氏給的名稱;“求一”是這類問題解題的關鍵。國外稱為“中國剩餘定理”或“孫子定理”。這是中國數學最有獨創性成就之一。繼秦氏而後學者多有研究,改進其方法,擴大其應用。如宋·周密之“鬼谷算”,楊輝之“剪管術”;明·嚴恭的“管表”,周述學的“總分”,清·張敦仁的《求一術》三卷(1803年),駱騰鳳的《藝遊錄》二卷(1843年),時日淳的《求一術指》一卷,黃宗憲的《求一術通解》二卷(1874年),以及現代著名數學家李儼、錢寶琮、華羅庚、吳文俊等,多所闡發。其中華羅庚教授所著《從孫子的“神奇妙算談起”》一書深入淺出,引人入勝。國外如高斯、偉烈亞力、關孝和、三上義夫等亦各有論述。
“大衍求一術”歷代多用文字敘述,沒有規定符號。例如,清·時日淳在所著《求一術指》中稱列全數為泛母,約泛母為定母,定母連乘為衍母,衍母各除為衍數,……乘率乘衍數為用數。用數乘剩數所得的各總,各總並之為總數,滿衍母去之得所求數。公元1925年5月《科學》雜誌第十卷第二期登載徐震池的文章“商餘求原法”採用符號:
其中N為所求數,A、B、C等為除數,a、b、c等為餘數。本文采用這種符號。現在綜合秦九韶、時日淳、黃宗憲三家的方法,介紹“大衍求一術”如下:
(一)各除數彼此之間沒有公約數(互質數)叫做“定母”,各定母連乘為“衍母”,在衍母中拿去一個定母其餘各定母相乘為“銜數”。如是,有多少個定母就有多少個衍數。用定母去除相當的衍數,如果餘數不是1,就要覓取一數a乘衍數,務使被定母除後餘數為1,這個數a叫做“乘率”,有多少個衍數,就要有多少個乘率。乘率乘衍數叫做“用數”,用數乘剩數(題給的餘數)叫做“各總”,各總合並,叫做“總數”,總數減去衍母倍數(要小於衍母)就得所求數 N.
用孫子問題作為例1,對上面術語作一說明,
(二)各除數不是互質數叫做泛母。將各泛母的質因子析出,有相同的質因子則保留其指數最大的加上△記號(例如4、6兩泛母,析因後保留4、3。又如9、8、6三泛母,經析因後保留9、8、1,由於1作除數不起作用,第三項為廢位),由此而得定母仍依(一)求N。
求乘率的方法是“大衍求一術”的關鍵。要善於觀察,化繁為簡,如果不易觀察,可用“輾轉相除法”從而求出乘率而使餘數為1。
例、65a+83得餘數為1,求a、
解:83-65=18,65-3×18=11 即 65-3×(83-65)=11
即 4×65-3×83=11
5×(4×65-3×83)-3×(83-65)=23×65-18×83=1 (注:5×11-3×18=1)。
由是得乘率為23。下面再用例題說明。
現說明上面三個乘率的求法。
144=35×4+4而4×9-35=1,故乘率為9。(注:為簡便起見,只就第一次餘數考慮。事實上有144×9=35×4×9+4×9=35×36+4×9=35×37+4×9-35=35×37+1。)
315=16×19+11而 11×3-16×2=1 ∴ 乘率為3,
560=9×60+20而20×5-9×11=1 ∴ 乘率為5。
本題三個泛母皆有因子7,為了保證各定母間沒有公約數,只能在某一項保留7。前面把7留在第一項,下面把7留在第三項,可以看出這不影響所求數N:
這裡的三個乘率的探求法,讀者可以作為練習。
上面兩例說明了“大衍求一術”的計算方法。“大衍求一術”曾應用於天文曆法測算上。自唐· 麟德歷以後至元·授時歷以前各代曆法家,用求一術以調正朔閏。郭守敬專重測驗,廢古法不用,全賴於秦九韶備載於所著《數書九章》。
華羅庚教授指出:中國剩餘定理不僅在古代數學史上有地位,而且它的解法原則,在近代數學史上還佔有重要的地位;在電子計算機的設計中,也有重要的應用。
關於“大銜求一術”的問題,還可用同餘式的記法。例1可記作;N=2(mod 3), N=3(mod 5), N=2(mod 7),求 N也可以用不定方程記之。求解;x=3a+2=5b+3=7c+2。
但用同餘式解法與不定方程解法皆未能涉及“求一”的原則。
“求一術”是中國獨創的數學理論,千餘年來,中外學者,研究未衰,應用廣泛,且方興未艾。希望數學工作者多加研究,旁搜遠紹,發揚國光,為四化建設,添磚添瓦。