周序林,張顯成,何均洪
(1.西南民族大學(xué)中國語言文學(xué)學(xué)院,四川 成都610041;2.西南大學(xué)漢語言文獻(xiàn)研究所,重慶 北碚400715;3.中國民用航空飛行學(xué)院大飛機(jī)學(xué)院,四川 廣漢618307)
《九章算術(shù)》有“少廣”章.(唐)李籍認(rèn)為:“廣少,縱多,截縱之多,益廣之少,故曰少廣.”[1](唐)李淳風(fēng)認(rèn)為:“一畝之田,廣一步,長二百四十步.今欲截取其縱少,以益其廣,故曰少廣.”[2]可見,“少廣”指在田面積1畝不變的情況下,田寬在1步的基礎(chǔ)上有少量增長時求田的長度.《九章算術(shù)》“少廣”章有關(guān)例題的田寬可表示為步(n=2,3,…,12).“少廣”算題需要對田寬諸分?jǐn)?shù)進(jìn)行通分.《九章算術(shù)》“合分術(shù)”本有“母相乘”的通分方法[2].(唐)李淳風(fēng)指出這種通分法的缺點(diǎn)是“列數(shù)尤多”“算數(shù)至繁”,因此特制少廣術(shù)“從省約”[2].《九章算術(shù)》“少廣術(shù)”求田寬諸分母公倍數(shù)的方法是:
置全步及分母子,以最下分母徧乘諸分子及全步,各以其母除其子,置之于左;命通分者,又以分母徧乘諸分子及已通者,皆通而同之.[2]
此法只要遵循“能除則除,能約則約”的原則,就能算得諸分母的最小公倍數(shù).
出土漢簡《算數(shù)書》簡164―165也載有“少廣術(shù)”[3],我們依據(jù)竹簡紅外線圖版將該術(shù)簡文整理如下(簡體行文,均用通用字,簡文符號略):“投少廣之術(shù)曰:先置廣,即曰,下有若干步,以一為若干,以半為若干,以三分為若干,積分以盡所投分,同之以為法.即藉置田二百四十步,亦以一為若干以為積步,除,積步如法得縱一步,不盈步者,以法命其分.”
學(xué)界普遍認(rèn)為,《算數(shù)書》“少廣術(shù)”沒有求最小公倍數(shù)的算法[4-8].我們認(rèn)為,這是對《算數(shù)書》“少廣術(shù)”的誤解,造成這種誤解的主要原因是對術(shù)文(尤其是“積分以盡所投分”)理解有誤[3,5,9-12]和對《算數(shù)書》的文獻(xiàn)性質(zhì)認(rèn)識不足.我們認(rèn)為《算數(shù)書》“少廣術(shù)”有求最小公倍數(shù)的算法,講述這一算法的術(shù)文是:“先置廣,即曰,下有若干步,以一為若干,以半為若干,以三分為若干,積分以盡所投分.”下文將對此算法進(jìn)行分析.
現(xiàn)將《算數(shù)書》和《九章算術(shù)》“少廣術(shù)”求最小公倍數(shù)算法的術(shù)文分解并對比如表1,觀察二者是否存在對應(yīng)關(guān)系.
表1 《九章算術(shù)》與《算數(shù)書》“少廣術(shù)”最小公倍數(shù)算法術(shù)文對比Table 1 Comparison between the methods for finding LCM in the Jiuzhang suanshu and the Suanshu shu
圖1 設(shè)置田廣Fig.1 Putting down the width of a field on the counting board
步驟2:以最下分母為例演示如何化分?jǐn)?shù)為整數(shù),分以下三個步驟進(jìn)行.
其中,步驟2(a)中“最下分母”指位于籌算板最下面的那個分母n,“以最下分母徧乘諸分子及全步”指用n分別乘以田廣步中的全步1和每一個分?jǐn)?shù)的分子,如圖2右列.簡文“下有若干步”指位于籌算板最下面的步數(shù)(即步);簡文“以一為若干,以半為若干,以三分為若干”中的“一”“半”“三分”為不完全例舉,其后還有若干個分?jǐn)?shù),直至;古算表達(dá)方式“以a為若干”指“某數(shù)乘以a得若干”;整句簡文指用n分別乘以田廣步中每一個數(shù),如圖2右列.顯然,《九章算術(shù)》相較《算數(shù)書》而言,表達(dá)方式更加概括、抽象.
圖2 最下分母n乘全步及諸分子Fig.2 Multiplying the width by the denominator at the bottom of the counting board
步驟2(b)中“各以其母除其子”指步驟2(a)中最下分母n與田廣諸分子的乘積除以各自的分母(如圖2左列),即:只要貫徹“能除則除”“能約則約”的原則,就可以確保最終算得最小公倍數(shù).《算數(shù)書》沒有表達(dá)“能除則除”“能約則約”的術(shù)文.《算數(shù)書》在“少廣術(shù)”后面有9個“少廣”例題[9],演算這些例題時發(fā)現(xiàn),圖2右列的運(yùn)算中存在“可除”“可約”的可能,現(xiàn)將其次數(shù)、分布狀況和所得公倍數(shù)統(tǒng)計如表2.
表2 《算數(shù)書》“少廣”例題中“可除”“可約”次數(shù)及所得公倍數(shù)Table 2 The number of times of dividing and fraction-simplifying when finding LCM in the 9 Shaoguang problems in the Suanshu shu
這9個例題共有45次“可除”和7次“可約”,各例題所得公倍數(shù)均為最小公倍數(shù).可見,《算數(shù)書》“少廣”算題在分母乘全步和諸分子的過程中,都遵循了“可除則除”“可約則約”的原則,從而算得了諸分母的最小公倍數(shù).此外,《算數(shù)書》還將“少廣術(shù)”求最小公倍數(shù)法應(yīng)用于非“少廣”類算題,如“徑分”“石率”“賈鹽”“米出錢”算題[9],這時同樣嚴(yán)格遵循了“可除則除”“可約則約”的原則.相反,《九章算術(shù)》沒有嚴(yán)格遵循這一原則,例如,1+=6,12)的最小公倍數(shù)應(yīng)該分別是60和27,720,但《九章算術(shù)》“少廣”第5和第11例題分別算得120和83,160[2].為什么這兩個例題沒有遵循此原則尚待進(jìn)一步研究.
步驟2(c)“置之于左”指把步驟2(a)、2(b)所得之?dāng)?shù)設(shè)置在左側(cè),如圖2左列.《算數(shù)書》無此表達(dá),但不影響計算結(jié)果.
步驟3:如何把其余分?jǐn)?shù)化為整數(shù).《九章算術(shù)》術(shù)文“命通分者,又以分母徧乘諸分子及已通者,皆通而同之”講述如何把其余分?jǐn)?shù)轉(zhuǎn)化為整數(shù),方法是:逐次以分母乘整數(shù)和各分子,直至所有分?jǐn)?shù)化為整數(shù)為止[13].我們認(rèn)為,《算數(shù)書》術(shù)文“積分以盡所投分”講述了相同方法.理解這條術(shù)文的關(guān)鍵是“積分”的含義.劉徽在《九章算術(shù)·方田》“徑分術(shù)”中講如何將帶分?jǐn)?shù)化為假分?jǐn)?shù)時論及“分母乘全……散全則為積分[2]”,白尚恕(1983)認(rèn)為劉徽稱“分母乘全”為“積分”[13].“積分”指帶分?jǐn)?shù)的分母乘以帶分?jǐn)?shù)的整數(shù),可引申指由這種乘法運(yùn)算所得的乘積.就“少廣術(shù)”田廣(1+中分?jǐn)?shù)構(gòu)成的特殊性而言,“分母”在“乘全”的同時還需要乘諸分?jǐn)?shù),因此《算數(shù)書》“少廣術(shù)”中的“積分”指分母乘以整數(shù)以及諸分子.可見,《算數(shù)書》術(shù)文“積分”與《九章算術(shù)》術(shù)文“又以分母徧乘諸分子及已通者”含義相同.此外,《算數(shù)書》術(shù)文“盡”意為“化盡”,“投”意為“計算”,“所投分”指所需要計算的分?jǐn)?shù),即田廣(1+ 12步中的).因此“以盡所投分”意為:以把中所有分?jǐn)?shù)化為整數(shù),這與《九章算術(shù)》術(shù)文“皆通而同之”表達(dá)的意思相同.
綜上,《算數(shù)書》“少廣術(shù)”術(shù)文“先置廣,即曰,下有若干步,以一為若干,以半為若干,以三分為若干,積分以盡所投分”除兩處省略外(見表1),其余均與《九章算術(shù)》“少廣術(shù)”相關(guān)術(shù)文呈對應(yīng)關(guān)系,其內(nèi)容可概括為:在籌算板上設(shè)置田廣)步,然后以最下分母n為例演示如何把分?jǐn)?shù)轉(zhuǎn)化為整數(shù),最后講述如何化其余分?jǐn)?shù)為整數(shù).術(shù)文省略但嚴(yán)格遵循了“可除則除”“可約則約”的原則.
“少廣術(shù)”只要堅(jiān)持“可除則除”“可約則約”的原則,就可以求得最小公倍數(shù).《算數(shù)書》嚴(yán)格地遵循了這一原則,但為什么這一原則在術(shù)文中沒有出現(xiàn)呢?這與《算數(shù)書》的文獻(xiàn)性質(zhì)有關(guān).鄒大海(2001)認(rèn)為《算數(shù)書》的性質(zhì)是一本“不大成系統(tǒng)的撮編之書”[4].因此《算數(shù)書》的語言表達(dá)還不夠規(guī)范統(tǒng)一,常有省略與簡省,其情形有三.第一是上文出現(xiàn)過的簡文,如果在相同語境中再次出現(xiàn),則往往省略.如“狐皮”算題簡36―37“狐出十二七十二分十一,貍出八〔七十二〕分卌九,犬出四〔七十二〕分十二”[10],其中〔七十二〕就是承上省略的簡文.第二是程序化的表達(dá)法往往采用簡省形式,如《算數(shù)書》描述做除法的程序,完整的表達(dá)如“婦織”算題簡56“……以為法,……以為實(shí),如法而一尺,不盈尺者,以法命分”[10],往往簡省為如“傳馬”算題簡53“以……為法,以……為實(shí)”[10],甚至簡省為如“程竹”算題簡70、71“以……為法”[10],因?yàn)樵诠湃丝磥?,只要看到“以為法”就知道需要做除法運(yùn)算了,故采用簡省的表達(dá)而不需費(fèi)盡筆墨完整地表達(dá)整個程序.《算數(shù)書》中這種簡省的形式,正如鄒大海(2001)所言:“一些簡省的表述說明《算數(shù)書》是在羅列一些已有的方法、算題或利用已有的方法解決應(yīng)用問題:換句話說,《算數(shù)書》中這些部分的方法是早已有之的.”[4]三是常識性知識的省略,如圓周率取值為3和“方五斜七”,這些知識在古人看來是常識,因此在《算數(shù)書》中沒有必要交代,而是直接運(yùn)用.這類省略對于現(xiàn)代的讀者來說比較隱晦,需要從算題的數(shù)據(jù)中尋找蛛絲馬跡.
根據(jù)以上三種省略,結(jié)合前文對“少廣術(shù)”的分析,我們可以得出三個結(jié)論.一是“少廣”例題都承術(shù)文省略了最小公倍數(shù)的計算過程而直接使用最小公倍數(shù)進(jìn)行通分.如例題((n=4)省略了計算最小公倍數(shù)12的過程,而直接使用最小公倍數(shù)12進(jìn)行通分.二是“少廣術(shù)”是“早已有之”的算法.不僅如此,它還為人們熟悉并廣泛運(yùn)用(見上文).正因?yàn)椤吧購V術(shù)”是“早已有之”、為人熟悉并廣泛運(yùn)用的算法,它才能以簡省的形式出現(xiàn)(即省略“可除則除”“可約則約”).三是所省略的“可除則除”“可約則約”是常識性知識,以至于在用“少廣術(shù)”求最小公倍數(shù)的計算過程中,不需要明言這一原則,古人都會一貫地、嚴(yán)格地執(zhí)行.
《算數(shù)書》“少廣術(shù)”計算最小公倍數(shù)的方法是,分別用田廣(1+)的諸分母(從n開始)逐次乘以全步1及諸分子,遵循“可除則除”“可約則約”的原則,全步1的積分就是諸分母的最小公倍數(shù).
《算數(shù)書》成書年代的下限為公元前186年[9],那么,求最小公倍數(shù)算法至少在公元前186年已經(jīng)成熟.比成書于公元一世紀(jì)的《九章算術(shù)》[14]提前了至少200年,可能接近甚至早于《幾何原本》求最小公倍數(shù)算法的時間.這在中國乃至世界數(shù)學(xué)史上都具有重要意義.