APP下载

清华简《算表》再研究

2021-11-30衣抚生

关键词:算数算题平方根

衣抚生

(河北经贸大学发票博物馆,河北石家庄 050061)

清华简《算表》是目前所知我国最早的数学文献,也是我国最早的计算器,还是世界上最早的十进制乘法表的实物,它的发现在我国数学史上占据重要意义,引起广泛关注。学者对此有许多探讨[1-5],其中全面介绍《算表》功能的,是李均明、冯立昇两位先生的论文《清华简〈算表〉的形制特征与运算方法》(以下简称《运算》)[6]、《清华简〈算表〉的功能及其在数学史上的意义》(以下简称《功能》)[7]。《运算》和《功能》称,该表“可能还用于开平方运算,但我们不能确定这一算表当时已被用于开方这样的复杂运算,这一问题尚待进一步探讨。”这一论述无疑是审慎而可取的。其中的原因,除了《运算》所说的开平方计算是“复杂运算”之外,可能更重要的原因是:《运算》所描述的开平方运算,用的是《九章算术》中的方法,而《九章算术》成书的两汉之际距离《算表》所在的战国时期,相差了二百年以上,未必能作为《算表》具有开平方功能的证据。以和《算表》时代相近的张家山汉简《算数书》为证,证明《算表》确实具有开平方功能,只是计算方法和《运算》描述的有所不同。在此基础上,笔者得出一个具有学术史意义的结论:早在战国时期,我国就已经产生了具有开平方功能的计算器。

具体说来,《运算》以2 304 为例,解说《算表》的开平方功能:

先在对角线中找出小于2 304 但与其最近的数1 600,将通过1 600 的纵横引线分别延伸至第一功能区,所见数字40 即确定了平方根之十位数。以1 600 减2 116 得516,即2 304-1 600=704,在纵横引线找到最接近但小于704 一半(352)的数320,通过另两条分别过两个320 的正交引线可确定平方根之个位数位为8。而320 的2 倍是640,704-640=64=82,因此正好被开尽。因此可求得,=48[6]。

这段描述有一个小错误:“以1 600 减2 116 得516”,这句话莫名其妙,原文没有2 116,也不该有516。我怀疑,《运算》本来以2 116 为例(平方根为46),不知为何,中途改成以2 304 为例(平方根为48)。改动时,“以1 600 减2 304得516”这句话,应该改为“以1 600 减2 304得704”,由于疏忽而未改。

在张家山汉简《算数书》中,找到比《九章算术》更早的开平方计算。《算数书》的拥有者为汉初某低级官吏,该官吏的下葬时代在汉朝吕后二年(前186)。《算数书》的算题为摘抄性质,是广泛地从各种书籍中摘录而来,并非原创,我们可以得出两个重要结论:第一,《算数书》的算题与算法的来源时间必然不晚于吕后二年,学界一般推测为战国时期或秦代。也就是说,其年代距离《算表》非常相近,可以作为我们研究《算表》的参考。第二,《算数书》的内容为低级官吏抄录而来,说明这些算题在当时较为常见,流传较广。如此高水平的《算表》,其制作者肯定是知道《算数书》中记载的数学知识的。也就是说,《算数书》的知识可以用于推算《算表》的功能。

《算数书》中,有一道名为“方田”的算题,其实质为整数的开平方近似计算,其内容如下:

方田田一亩方几何步?曰:方十五步卅一分步十五。术曰:方十五步不足十五步,方十六步有余十六步。曰:并赢、不足以为法,不足子乘赢母,赢子乘不足母,并以为实,复之,如启广之术[8]。

这道算题实际上是求240 的平方根是多少。计算方法是:容易知道,平方根位于15~16 之间。152=225,不足240,所以称15 为“不足母”,余数240-152=15 称为“不足子”。162=256,超过240,所以称16 为“赢母”,余数162-240=16称为“赢子”。以“不足母+赢母”作为分母,以“不足子×赢母+赢子×不足母”作为分子,得到的分数就是其近似值。

《算数书》计算整数开平方的方法,和《运算》描述的不同,思路简单而巧妙:将复杂的开平方运算变为简单的乘方运算,这样就极大地降低了计算的难度。如果不能开尽,则找到“不足子”“不足母”和“赢子”“嬴母”,用盈不足术取得近似值。用这种方法计算《运算》中的例题2 304的平方根,计算方法为:

(1)先在对角线中找出小于2 304 但与其最近的数1 600,将通过1 600的纵横引线分别延伸至从第一功能区,所见数字40 即确定了平方根之十位数。下面尝试找到小于平方根的“不足母”和大于平方根的“盈母”;

(2)因数40,1 两条引出线与因数40,1 两条引出线纵横相交于1 600,40,40,1 四个交点,将此四数相加为1 681,小于2 304,继续尝试;

(3)因数40,2 两条引出线与因数40,2 两条引出线纵横相交于1 600,80,80,4 四个交点,将此四数相加为1 764,小于2 304,继续尝试;

(4)因数40,3 两条引出线与因数40,3 两条引出线纵横相交于1 600,120,120,9 四个交点,将此四数相加为1 849,小于2 304,继续尝试;

(5)因数40,4 两条引出线与因数40,4 两条引出线纵横相交于1 600,160,160,16 四个交点,将此四数相加为1 936,小于2 304,继续尝试;

(6)因数40,5 两条引出线与因数40,5 两条引出线纵横相交于1 600,200,200,25 四个交点,将此四数相加为2025,小于2 304,继续尝试;

(7)因数40,6 两条引出线与因数40,6 两条引出线纵横相交于1 600,240,240,36 四个交点,将此四数相加为2 116,小于2 304,继续尝试;

(8)因数40,7 两条引出线与因数40,7 两条引出线纵横相交于1 600,280,280,49 四个交点,将此四数相加为2 209,小于2 304,继续尝试;

(9)因数40,8 两条引出线与因数40,8 两条引出线纵横相交于1 600,320,320,64 四个交点,将此四数相加为2 304。可见48即为平方根。

对于《算数书》的开平方算法而言,计算2 304 的平方根实在是太过简单的事情,就连2 305 等无法开尽的平方根,它都有办法处理。其计算方法为:

(1)先计算平方根的十位数,结果为40:在对角线中找出小于2 305 但与其最近的数1 600,将通过1 600 的纵横引线分别延伸至从第一功能区,所见数字40 即确定了平方根之十位数;

(2)计算41 的平方,看其与2 305 的关系:因子40,1两条引出线与因子40,1两条引出线纵横相交于1 600,40,40,1 四个交点,将此四数相加为1 681,即412=1 681,小于2 305,继续尝试;

(3)以此类推,分别计算422,432,442……482,492与2 305 的关系,发现482为2 304,小于2 305,492为2 401,大于2 305,则个位数为8;

(4)由(3)可知,“不足母”为48,“不足子”为2 305-482=1,“赢母”为49,“赢子”为492-2 305=96,则最终的结果为(1×49+48×96)/(48+49)=。

需要注意的是,今天的数学计算追求绝对准确,所以会觉得古人没法计算2 305 的平方根,但所追求的首先是实用,而不是绝对准确。比如,秦汉时期的π 取值为3,误差较大,就是出于实用的目的而非绝对准确。《算数书》计算整数开平方运算,也是类似的并不完全准确的实用方法。这样就导致《运算》眼中的“复杂运算”,在古人的近似计算中却相当简单。我想,这种思路上的差别可能是李、冯两位先生不太敢相信《算表》可以被用于计算整数开平方计算的原因。

综上所述,《算表》具备计算整数开平方的功能,而且计算方法应该和《算数书》“方田”算题相近。因此,我国产生具有开平方功能的计算器的时间,可以毫无疑问地提前到战国时期。

猜你喜欢

算数算题平方根
根据“倍数”巧算题
利用“倍数”巧算题
“平方根”检测题
平方根与算术平方根的区别与联系
一屋三室
说话要算数
利用『倍数』巧算题
KD444:加减魔尺
人生没有白走的路,每一步都算数
“平方根”检测题