- 發布時間:2022-03-28 14:14:19 瀏覽次數:625
- 張家山漢簡《算數書》“盧唐”、“行”算題再探討
-
(湖南大學建築學院,湖南大學簡帛研究中心)
(首發)【摘要】本文探討的是張家山漢簡《算數書》“盧唐”、“行”兩道算題的釋文及算法算理。文章分析了以往學者們對這兩題的不同意見;論證了“盧唐”算題原簡文無誤,進而闡釋了原簡“術文”的算理;提出了“行”算題的另一可能算法。
【關鍵詞】算數書,盧唐,行
張家山漢簡《算數書》是1983、1984年之交從湖北江陵張家山247號漢墓出土的一部數學著作,抄成年代下限推斷爲西漢呂后二年(前186年),部份算題算法的形成年代或可追溯至戰國時期。全書現存69個題名,完整算題92例,單獨成題的術文6例。[1]自《算數書》公佈以來,學者們從多個方面精深研究,對某些問題是存在不同意見的,本文將討論其中的兩道算題,題名爲“盧唐”、“行”。一.對“盧唐”算題簡文校勘、算法算理闡釋的再探討 “盧唐”算題簡文如下:
盧(籚)唐() 程曰:一日伐竹六十箇,一日爲盧(籚)唐()十五,一竹爲三盧(籚)唐()。欲令一人自伐竹因爲盧(籚)唐(),一日爲幾何?曰:爲十三(129)盧(籚)唐()四分之三。术(術)曰:以六十爲法,以五十五乘十五爲實。(130)
盧唐,竹筒。此題的題設條件描述了兩道工序:先砍竹子,再製作竹筒。
學者們對此題的不同意見主要在於簡文校勘、算法算理闡釋:
(一)首先,彭浩先生整理了《算數書》,在其著作《張家山漢簡〈算數書〉註釋》一書中給出“盧唐”算題的釋文、注釋、校改意見。具體校改是:算題答案的“十三”之“三”係“二”之誤;“四分之三”係衍文;術文的“六十”後脫“幷十五”;“五十五”校改爲“六十”。[2]
按原簡文列出的算式:。
按校改後簡文列出的算式:。
從彭浩先生的校改可看出,是在按古算“齊同術”進行的校改。《算數書》裡還有“負炭”、“羽矢”算題也是“齊同術”應用的實例,兩題術文寫的都是:條件兩數相乘以爲實(分子),相加以爲法(分母)。如此校改的思路可能是把砍竹的時間與製作盧唐的單位時間相加,再用1天時間去除這個數得出的計算式,即:
此校改方案存在的問題是:可能忽略了砍竹是製作盧唐的必要條件、前置條件;1根竹子製作3個盧唐的關係;還有,竹子是整枝砍下的,不是砍到幾分之幾能停下,此處應“取整”,但製作盧唐可以是進行到幾分之幾的程度的。
(二)郭書春先生在《〈筭數書〉校勘》一文中對“盧唐”算題釋文也提出了一種校改意見,[3]如下:
將原簡文答案的“爲十三盧(籚)唐()四分之三”校改爲“爲十三盧(籚)唐()十三分之十一”;將原簡文術文的“以六十爲法,以五十五乘十五爲實”校改爲:“以六十五爲法,以六十乘十五爲實”。並指出,郭世榮先生亦是同樣意見。[4]
(三)吳朝陽先生在其著作《張家山漢簡〈算數書〉校證及相關研究》一書中表述的主要意見是:
將原簡文的“一日伐竹六十箇”校改爲“一日伐竹五十五箇”,亦認同本題是用“齊同術”計算,闡釋本題之“術”的思考方式是:因爲“一日伐竹五十五個”及“一日爲盧唐十五”,所以要以“五十五乘十五爲實”。而因爲所爲是“盧唐”,而已知“一竹爲三盧唐”,“一日爲盧唐十五”只消耗竹五個,所以以55+5,“六十爲法”。也就是說,六十日共“治竹”5×55個,爲“盧唐”15×55,因而其計算過程爲:。[5]
上述學界異議,或多或少都需要校改原簡文。而我以爲,原簡文無誤,詳述如下:
先分析題設條件:工序一,伐竹1箇需時日;工序二,製作1箇盧唐需時日;工序一和工序二之間的關係,竹1箇可製作3箇盧唐,伐竹是製作盧唐的必要條件,伐竹只能是整枝砍伐而製作盧唐可以是工序未完成。
然後做預算:伐竹1箇製成3個盧唐,這一組完整工序流程用時,一天的時間可完成的組數情況是< 1 <,即,前4組工序流程已完成,第5組工序流程未完成,但是第5組工序中,竹子已砍下,只是盧唐有未製作完的。當然,工匠未必會作預算,不過,可以設想在未知最大產量的情況下,很可能會採用工序一、工序二成組循環完成的方式。
接著推理:按之前的預算,已經伐竹5箇,而1天時間其實能伐竹60箇,那麼就多出伐竹55箇的時間用來製作盧唐,能做出的盧唐數就是(箇)。運算到最後一步的表達式,既是算題原簡文“術文”所述。
我們再從另一種思路驗算:一組完整工序流程用時日,執行完4組得到12箇盧唐後,剩餘的時間(日),此時考慮工序一(伐竹)是工序二(製作盧唐)的“必要條件”,且伐竹只可能是整枝砍下來,因此,第5個不完全工作流程製作的盧唐數量是(箇),算得最終答案是(箇)盧唐。
可以說,“盧唐”算題涉及到了“必要條件”和“取整”的概念。二.對“行”算題缺簡內容、算法推測的再探討 “行”算題僅存一枚簡,簡文如下:
行 甲行五十日,今(今)日壬申,問何日初行。术(術)曰:問壬申何旬也,曰:甲子之旬也。既道甲數到任(壬)九日,直(置)九,有(又)增 132
題意大致是:某人路上走了有50日,若今日干支是“壬申”,出發那日的干支是什麼?
對於簡文,彭浩先生作出釋文,指出“下有缺簡”,釋“今(今)日壬申”的第一個“今”字爲“若”,未進行缺簡校補和算法推測。[6]
郭書春先生《〈筭數書〉校勘》一文中引郭世榮先生意見,指出“壬申”日是“甲子旬”第九日,所行五十日正好是整五旬,比一個記日週期少十日,據“直(置)九,有(又)增”推測“意爲增加一旬即可得所求日干支”,具體到此算題就是:第九日“壬申”加一旬就到了下一旬的第九日“壬午”日,算題答案爲:“曰:壬午日初行。”[7]
郭世榮先生給出的這個答案“壬午日初行”存在一個問題,那就是如果壬午日初行,且計算爲行程第1天,那麼第50天的干支實際是“辛未”(見後文干支表),第51日才是“壬申”,因此,這一算法推測及答案補出是不可取的。
吳朝陽先生補全算題簡文爲:
行 甲行五十日,今今日壬申,問何日初行?術曰:問壬申何旬也?曰甲子之旬也。即道甲數到壬九日,置九,有增十日,是癸未日初行也。
吳先生推測了算法,概括如下:
第一步,查“六十甲子表”知“壬申日”在“甲子之旬”;
第二步,“甲數到壬”共計“九日”,因此起行日到“甲子日”共有日;
第三步,因“六十甲子表”的循環性質,上溯41日等於下行19日,從“甲子”往下數19日爲“癸未”。
據此思路補出了簡文。這一方案得出的答案正確、算法完全可行。
如果還能再多說明一點:因“甲子日”已計入上溯41日內,所以下數19日,就該從甲子日的後一日爲起始計數。這樣表述或是更清晰些。
那麼,是否還存在其他可能的算法呢?我們先依照題意按“旬”排列“六十甲子表”:
再看原簡文算法:“术(術)曰:問壬申何旬也,曰:甲子之旬也。既道甲數到任(壬)九日,直(置)九,有(又)增”,後續簡文其實也可以爲:又增四旬(甲寅之旬、甲辰之旬、甲午之旬、甲申之旬),,初行日就是“甲申之旬”再往前推1天,即癸未日。解題思路是這樣的:無論出行共有多少天,推算是上溯還是下行,只要拿掉中間的整旬天數(即10的n倍,n爲整數),當確定了一端不滿旬的天數,就能算出另一端的天數,從而知道那一天的干支。這一解法的好處是數起日子來簡單些,不超過10個干支(即)。
還可變一下,天干地支分開計算。思路仍是從總數裡拿掉中間的整循環,能確定一端,即知另一端。天干的推算仍是,初行那天的天干就是“甲子”之“甲”逆推1位的“癸”。又因地支是12位在循環,所以地支的推算是,初行那天的地支就是“甲子”之“子”逆推5位(亥戌酉申未)的“未”,得出答案:癸未日初行。這樣計算就不用對著“六十甲子表”去數日子,只不過難得擬合“術文”。
另外補充一點:“既道甲數到任(壬)九日”,道,從、由,楊樹達《詞詮》卷二:“道,介詞。由也,從也。”秦簡《數》之“箕田”算題:“道舌中丈徹中,以爲從(縱)”。
[1]彭浩.張家山漢簡《算數書》註釋[M]. 北京:科學出版社,2001. 第1-6頁.
[2]彭浩.張家山漢簡《算數書》註釋[M]. 第94頁。
[3]原簡文寫作“筭數書”。
[4]郭書春.《筭數書》校勘[J]. 中國科技史料. 第22卷2001年第3期,第213頁。
[5]吳朝陽. 張家山漢簡《算數書》校證及相關研究[M]. 南京:江蘇人民出版社,2014,第108-109頁。
[6]彭浩.張家山漢簡《算數書》註釋[M]. 第95頁。
[7]吳朝陽. 張家山漢簡《算數書》校證及相關研究[M]. 第110-113頁。
(編者按:本文收稿時間爲2022年3月23日16:56。)