衣撫生
(河北經貿大學 發(fā)票博物館,河北 石家莊 050061)
出土算術文獻,是目前學界研究的熱點之一。數字殘缺問題,是出土算術類文獻整理中的常見問題,對出土算術文獻的研究造成了較大的困擾,亟需解決。目前來說,其解決方法主要有:通過紅外線掃描,獲得更為清晰的圖像;結合殘余筆畫,進行字形分析;采用簡單的整數或分數運算,進行推測。本文介紹兩種在特定情況下簡單有效的新方法,即窮舉法、特性分析法。窮舉法,即將取值范圍內所有的可選項逐一驗證,直到驗證完畢。這種方法的要求是:可選項必須是有限的。它在分母完整、分子缺失的情況下,簡單有效,通常可以極大地縮小范圍,甚至是直接得出正確答案。特性分析法,是根據算題的特性,靈活地采取相應的解法。為了簡便起見,本文介紹的是一類特殊的特性分析法——乘數因子包含大素數的特性分析法。
本文以《算數書》“大廣”算題為例,來介紹這兩種方法。當然,筆者關注的不是“大廣”算題本身,而只是將其作為介紹窮舉法和特性分析法的一個例子。“大廣”算題的內容如下:
大廣廣七步卌九分步之□□□□□□□□□□□□□□□□□為□六十四步有(又)三百卌三分步之二百七十三。大廣術曰:直(置)廣從(縱)而各以其分母乘其上全步,令分子從之,令相乘也為實,有(又)各令分母相乘為法,如法得一步,不盈步以法命之。[1](156)
該算題殘缺數字較多,其復原工作也就成了非常有趣的智力游戲。郭書春[2](217-218)、郭世榮[3](284)、王元鈞[4]等先生都對該算題有過研究,不過他們的研究均修改了已知條件。要知道,已知條件是我們進行推論的基礎,這個基礎如果不存在,可以進行隨意修改,那么本算題就根本無法進行校正。因此,我們堅持不改動已知條件,對這些研究也就置而不論。紀志剛先生的觀點值得引起重視——他是第一個嘗試用窮舉法來解決該問題的學者。紀先生通過計算機程序,得到11種可能性,經過排除,留下兩種組合,分別是:
廣七步四十九分步之七,從九步十四分步之一。問為田幾何。得曰:為田六十四步又三百四十三分步之二百七十三。
廣七步四十九分步之卌二,從八步╪七分步之十九。問為田幾何。得曰:為田六十四步有(又)三百四十三分步之二百七十三。[5](233)
紀先生通過計算機尋找各種可能性,嘗試了很多種情況,其結論具有較強的說服力,但是不完全準確,論證過程也存在缺憾:
第一,紀先生的排除方法有錯誤。紀先生計算出來的“從”全部都是最簡分數,沒有注意到“從”可以不是最簡分數。以紀先生的計算結果來說,兩種組合的“廣”都不是最簡分數,他卻要求“從”必須是最簡分數,并據此進行排除。這是難以說服人的。比如,被排除了,理由是分母3不是7的倍數。其實,我們完全可以把該分數變成非最簡分數8—,這樣就可以滿足條件了。
第二,紀先生假定B2的值為“1-343之間”。這個假定是不合理的,B2為什么就不能大于343?B2完全可以大于343,經過約分后,讓結果的分母變成343。當然,紀先生這么做是有苦衷的:倘若不限制B2的大小,那么這道算題就需要嘗試無數種可能性,也就無從計算了。因此,紀先生只能人為設定一個最大值,從而將無數種可能性變?yōu)橛邢薹N可能性。這恰恰說明紀先生的算法有問題,存在較大的局限性,無法做根本上的解決。
第三,紀先生的計算過程太繁瑣。嘗試的排列組合達到(1+2+3+……+342)×48×2=5,630,688種之多?。ㄓ嬎惴椒椋航M合需要嘗試的次數×A需要嘗試的次數×B需要嘗試的次數)。而且,這種方法雖然給出了答案,但是沒有嚴密的計算方法,也看不到計算過程,這不能不說是一個遺憾。
總之,紀先生的計算方法不是很完美,存在這樣或那樣的問題,卻是很有價值的,原因在于,這種計算方法實際上已經具備了窮舉法的雛形,值得重視。
在正式介紹窮舉法和特性分析法之前,我們首先討論這道題目的兩個限制條件。限制條件1:我們可以根據缺失的字數,大體推斷出A、B1、B2所占的字數。按照《算數書》和秦漢數學材料的表述規(guī)范,我們可以給“大廣”算題補充一些文字(用加黑字體標識):“大廣廣七步卌九分步之□□從八(或“九”)步□□分步之□問為田幾何。曰:為田六十四步有(又)三百卌三分步之二百七十三?!逼渲?,“問”字可以省略,《算數書》公布答案的句式有“曰”和“得曰”兩種,也就是說,A、B1、B2的字數加起來是4(“得曰”)到6(省略“問”字)個字之間。限制條件2:我們注意到,計算結果343可以化為49×7,而被乘數的分母是49,這表明7這個因子應該來自B2。如果上述8組數據的B2不能整除7,需要將B1、B2都乘以7。
下面,我們來介紹前文所提到的窮舉法。窮舉法是最簡單、最直觀的方法,我們不需要像紀先生那樣同時考慮A、B、B1、B2的值,把簡單問題復雜化。實際上,我們只需要根據1≦A≦48這一限制條件,嘗試A的48種可能性(從1到48),就可以根據,算出相應的B、B1、B2的值——我們將所得結果化為帶整數的分數,整數部分即為B,分數部分的最簡形式,其分母即為B2,分子即為B1(當然,我們可以根據需要進行調整,使之成為非最簡形式)。例如,我們可以嘗試A為3的情況,,因此,B=9,B2=346,B1=61。以此類推,只需要嘗試48次,就可以得到所有的結果。由于這個結果較為繁瑣,而且容易獲得,這里就不詳細論述了。
(1)廣七步卌九分步之七,從九步十四分步之一。問為田幾何。得曰:為田六十四步有(又)三百四十三分步之二百七十三。
(2)廣七步卌九分步之卅二,從八步百五分步之卌九。為田幾何。曰:為田六十四步有(又)三百四十三分步之二百七十三。
(3)廣七步卌九分步之卅八,從八步廿一分步之七。問為田幾何。曰:為田六十四步有(又)三百四十三分步之二百七十三。
(4)廣七步卌九分步之卌二,從八步╪七分步之十九。為田幾何。曰:為田六十四步有(又)三百四十三分步之二百七十三。
通過這道算題,我們可以看出:窮舉法有可能會成為解決這一類問題的通用方法——如果一個分數的分母是完整的,分子有殘缺,就可能將分子的取值限定在一個較小的范圍內,配合以其他限制條件,或許會很容易得到幾組最優(yōu)解。退一步講,就算分母也殘缺,只要沒有完全殘缺,還是可以用枚舉法。比如,如果本算題被乘數的分母“49”殘缺了一個數字,我們就完全可以假定該數字為從0~9的數字,進行帶入計算。其計算步驟依然是有限的,并且涵蓋了所有的可能性。因此,在分母齊全或者部分殘缺并知道殘缺的位數的情況下,窮舉法是具有較大價值的推導方法。
特性分析法是指先尋找該算題的特性,再根據這些特性,盡量縮減可能性和計算范圍。如前所述,本算題采取的實際上是乘數因子包含大素數的特性分析法(主要體現在下文的“性質3”中)。我們將等式化為假分數的形式,可以得到方程。采用特性分析法的計算過程如下:
性質2:限制條件2可表述為B2=7m(m是正整數)。在計算的過程中,m被當成公因子消去了,所以沒有顯示在結果的分母值343中。
性質3:我們發(fā)現結果的分子里有一個大素數127,這可以為我們的計算提供很大的方便。通過分析方程1可知,343+A和B×B2+B1這兩者之中,至少有一個能整除127,因此本題可以化解為兩個部分:343+A能整除127;B×B2+B1能整除127。所有的可能解均在這其中。
由于1≦A≦48,343+A的取值范圍是[343,391],其中能被127整除的只有381,此時A=38。由可知,?的最簡分數形式是,參考性質2可知,該分數應變成。
即:B×7m+B1=127d,其中m、d均為正整數,0<B1<7m,B=8或9。我們可以分成如下兩種情況進行討論:
1.B=9,即9×7m+B1=127d,變形得:B1=127d-9×7m。由于0<B1<7m,可得:0<127d-9×7m<7m,變形可得:,即1.81d<m<2.02d,m=2d。將其代入方程,可得:B1=127d-9×7m=127d-9×7×2d=d。因此,乘數是,被乘數是。
2.B=8,即:8×7m+B1=127d(方程2)變形得:B1=127d-8×7m。由于0<B1<7m,可得,即2.02d<m<2.27d,只有當的整數部分不一樣時,整數m才可能存在。由此可知,d≧4。當d≧7時,B2將是三位數,字數超出限制,不符合要求。因此,d的值只能取4、5、6、7之一。其中存在兩個可能解,即:。
至此,我們就會得到該算題的全部四種可能解,即:如果343+A能整除127,那么對應的解為:,如果B×B2+B1能整除127,且B=9,那么對應的解為:,如果B×B2+B1能整除127,且B=8,那么對應的解是:。相關的文字已經在上文表述過了,這里不再贅述。
可以看到,上述兩種計算方法適用的情況不一樣:在分母完整(或者是部分殘缺,且明確知道殘缺了多少位)、分子殘缺的情況下,窮舉法較為簡單有效,只需要將分子按照從1到分母減1的順序,逐個帶入即可;而在數字存在某些特性,尤其是存在大素數乘數因子的情況下,特性分析法較為簡單有效。在明確等式兩邊都有該大素數因子的前提下,通過查找該大素數因子所在的位置,可以將計算簡化為幾種情況,也就是說,這兩種方法都是針對特定情況的有效方法。數學是出土算術類文獻的核心要素,應提高數學運算在出土算術類文獻整理和研究中的比例。