一部年代需要保留余地的算书
《孙子算经》的作者生平和确切成书年没有可靠的直接记录。研究者根据书中制度、度量衡、用语及其他文本线索判断年代,通常将其放在公元三至五世纪讨论。本条采用约200—500年的范围,仅表示文本形成的大致区间,不能据此指定某年刊行,也不能把署名孙子等同于《孙子兵法》的孙武。
传世本共三卷,上卷说明计算基础,中下卷用问题和术文展开方法。书中涉及物价、粮食、人数、距离和面积等对象,显示算学与日常管理的联系。其后被纳入算经传统并用于教学,是文本传播的另一阶段,不能反过来证明现存全部内容一开始就按后来的课程制度编成。
先认数位,才能操作算筹
书中强调运算前要识别数位,并说明纵横相间的布筹方式。个位、十位、百位等位置交替用不同方向表示,避免邻近筹数混淆。同样一组筹放在十位与个位,所表示的大小相差十倍;空位也具有意义,不能因为那里没有筹就任意把两边的数挤在一起。
乘除术文又规定被算的数和运算结果放在什么位置,以及何时移动或撤去已用部分。因此,算法同时包含数字关系与手上操作。今天将结果写成一行阿拉伯数字固然方便,却会省略原文读者依靠空间排列完成计算的过程;读古算书,需要同时注意文字指令和筹位变化。
单位换算也是算法的一部分
书中先列长度、容量和重量等单位,再用具体问题练习换算。买卖、分配或计算物体大小时,数值必须同单位一起理解;把丈与尺、斤与两混算,即使乘除步骤没有错,答案也会失去意义。古代单位体系还可能随时代和地区变化,研究者不能默认它们与今天的市制完全相同。
题、答、术相接的编排给学习者提供了两层检验:一层是按步骤是否得到书中答数,另一层是所得量是否适合题目所问。答案不只是一个孤立数,还要说明它表示多少长度、体积或钱数。这些基础训练为后面较抽象的数物问题准备了计算语言。
参考:[1]
物不知数怎样得到二十三
卷下著名的物不知数题,给出同一批物品分组计数的结果:每三件一组余二,每五件一组余三,每七件一组余二,要求总数。书中的方法分别取七十、二十一、十五,与对应余数相乘,再将所得合并,并减去一百零五的适当倍数。
按题数演算,七十乘二得一百四十,二十一乘三得六十三,十五乘二得三十,合计二百三十三;减去两个一百零五,得到二十三。将二十三分别除以三、五、七,余数确实为二、三、二。这里呈现的是原题算法的复算,不是根据后来韩信点兵的故事来确定作者或历史事件。
参考:[1]
三个特殊数为什么有效
用现代语言解释,七十能被五和七整除,而除以三余一;二十一能被三和七整除,而除以五余一;十五能被三和五整除,而除以七余一。因此,每个加项只负责一项余数条件,不会改变另两项。合并后再减去一百零五,也不会破坏任何一项条件,因为它是三、五、七的公倍数。
二十三只是最小的正答案,加上任意个一百零五仍符合三个条件。这种解释帮助今天的读者理解原术,却不能声称古书已经以现代符号证明了适用于一切模数的完整定理。原文提供的是特定除数下的计算方法;一般情形的算法和理论,在后来的数学史中才有进一步展开。
从可记忆程序到长期传授
《孙子算经》的简洁术文和有节奏的表达,便于口授与记忆。但熟记并不等于理解,读者仍须知道数位、单位和各步的用意,才能改变题数而正确运算。后世围绕余数问题产生新的名称、口诀和更一般的算法,这些发展证明题目具有延展性,却不应全部倒写进早期文本。
唐代李淳风等对算经的整理和注释,使《孙子算经》进入新的教学与传承环境;宋刻、抄本及清代以来的校勘,又影响今天可读的文字。它的重要性兼具两个方面:保存布筹运算的详细线索,也展示如何把看似零散的计数信息组合成确定的结果。其成书的不确定性并不妨碍我们准确分析这些具体方法。