1.3算术计算 7· 易地表示成这个“小”单位的整数倍.巴比伦人的60进位制仍然在我们的角度和时间的计量单位中 被采用,这种单位在天文学的文献中保留了多少个世纪,而且至今仍然是世界文化的一个不可替代 的部分 古印度的记数系统未见经传,但是有文字迹象表明,表示数的符号的确存在过.只是到了公元 前3世纪才有了书写数字的实例.起初这是个混合记数系统.对从1到9和从10到90的各个数各有 一个类似于象形文字的符号,对于更大的数就采用类似于中国的累积式记数系统.例如,200的符 号就是2和100这两个符号的组合,而70000的符号就是70和1000这两个符号的组合.在第六章中 将会谈到,近代的十进位制是在印度或邻近的地方产生的,但这已经是大约7世纪的事了. 1.3 算术计算 一旦记数系统出现了,所有各种文明就会制定出各种相应的基本算术运算的规则一加法、 减法、乘法和除法的运算规则,而且作为最后一种运算的副产品,还会得出分数的书写和运算规则 来这些运算规则可以看成是一些最早的算法, 一个算法就是一张设计好了的有序的指令表,目的是为了得出某一类问题的解,古时候的人做 出了处理许多不同问题的各种算法.实际上,古代数学在本质上可以看成就是算法,这和希腊的数 学不同,后者强调的是理论.在绝大多数可以得到的古代数学文献中,作者首先是描述要解决的问 题,然后用一个算法进行计算以得出其解,这个算法可能是显式的,也可能是隐式的.在这些文献中 很少谈到这些算法是怎么来的,它为什么有效,或它们有什么限制.相反,我们只看到许许多多应用 这些算法的例子,经常情况是越来越复杂.不过在讨论这些算法时,我们会讲述它们的可能来源和 它的道理何在,同时还会谈谈,那些巴比伦人,中国人和埃及的书记员们在面对学生们提出“为什 么?”这个永恒的追问时将可能做出怎样的回答 在埃及人的象形编组数系中,加法十分简单:只要把个位数,然后是十位数,再然后是百位数等 等组合在一起就是.当某种符号组的数目有十个时,就用下一个符号来代替.因此,把783与275相 加,就是把AMA333与PR放到-起,得到0000039.由于有十五个n,将其 中十个换成一个9,这就使得后一种符号有十个,再把它们换成一个,最后的答案就是栅, 或1058.减法可以类似地来进行.自然,在此情形,当需要“借”位时,被借的一位符号就转化为十个 低一位的符号 在简化象形记数体系中,相加和相减的运算就不可能是这样简单的算法了.数学纸草书中没有 为这些运算提供什么线索;相加与相减的结果都是直接写下来的.很可能书记员们有加法表.在某 个阶段这种表可能以书面的形式存在过,但是一个有竞争力的书记员自然会把它们记住.这些书记 员可能反向使用过这种表来计算减法的问题, 埃及人的相乘算法是以连续加倍的方法为基础的.将两个数α与b相乘,书记员的做法是,先 写数对1,b,然后重复对这对数的每一个进行加倍,直到下一次加倍会使这一对数中的第一个元素 超过a.然后,在确定了哪几个2的幂次相加会得α之后,把相应的b的倍数相加,就得到了所需要 的答案.例如将12与13相乘,他可以先写下下面的各行数:
·8 第1章 古代数学 112 224 448 896 写到最后一行他就可能会注意到,下一步的加法会在第一列中得出16,这是大于13的.然后他会查出 哪几次加起来会得13,即1,4和8,他再把另一列中相应的数加起来.结果写下来就是:总计13156. 和前面讲的一样,书记员是怎样进行加倍计算的并没有记载.答数就是直接写在下面.很可能 书记员已经记忆住大量的2的倍数表.事实上,有一些迹象表明,在埃及南部的非洲区域内,加倍是 一种标准的计算方法,所以有可能埃及的书记员是从他们的南方同事那里学来的这种方法6.此外, 这些书记员们多少觉察到每一正整数可以惟一地表示成2的幂之和.这一事实保证了这一方法的 合理性.它是怎样被发现的呢?我们最好的猜想是,它是通过实验发现,然后由口头传承下来的 因为除法是乘法的逆运算,一个像156÷12的问题就可以表达成“乘12以获得156”.那么书记 员就会写下与上面列出的相同各行.不过这次他要检查右边一列中加起来会等于156的各个数;在 本例中为12,48和96.那么左列中与之对应的数,即1,4,8,相加得出结果为13.自然,相除不一定 “得出整数”,在得不出整数时,埃及人就用分数, 埃及人用的分数类型是单位分数,或者说是“几分之一”(分子为1的分数),惟一的例外是2/3, 可能是因为这种分数是最“自然的”.分数1/n(n分之一)在象形文字中表示如下:在整数n的符号 上方放上符号一,在简化象形文字中用一点来代替.这样17在象形文字中记为屈,而在简化象形 文字中记为1.唯的一例外,2/3,有一个特殊的符号:分(在象形文字中)或Y(在简化象形文字 中)(前一个符号是指它是1之的倒数).不过,在本书的以后各部分将用元来代表1/,用3来代 表2/3. 因为分数是作为除不尽时的结果出现,这就要求我们能够处理除单位分数以外的分数.埃及数 学最复杂的技巧就是与此相关而发展起来的:即用单位分数来表示任意分数.不过埃及人不是这样 来提问题的.当要用到一个非单位分数时,他们就会直接写下许多单位分数之和.例如,《兰德数学 纸草书》中的问题3是问,如何给10个人分配6个面包,答案是给每个人2而个面包(即号+0). 书记员将这个值乘以10就可以检验这个结果对不对.我们可能认为这个答案比我们的答案3/5要 繁琐些,但在某种意义上按这个结果来作实际分割会更容易.如果我们将5个面包对半分,再把第 六个面包分成十份,然后给每个人半个,再加十分之一个,那么大家都很清楚,每个人都分得了同样 多的一份面包.不管繁琐与否,埃及人的这种单位分数之和的办法在整个地中海区域沿用了两千 多年 在将整数相乘时,重要的一步是加倍.同样,书记员也要能够表达出任何单位分数的二倍.例如 在上述问题中,对解的验算如下: 1 210 2 15 4 2315 ~8 431030 10 6 这些二倍数是怎样得出来的呢?加倍210简单:因为每一个分母都是偶数,只要将它减半就行了.可
1.3算术计算 ·9· 2 DIVIDED BY 3,5,AND 7 0 .Y.b· q元 八·、人 1. k w宁 "分· g}分 333 来=六·引x, e. >l- 一人 X月 =ArX=不 图1.7兰德数学纸 ! 母 草书上2÷3,2÷5和 :2 2÷7的摹本及其象 "0:受小 形文字译文(来源: 兰德纸草书,N.C.T. 82 M). 是,在下行必须将5加倍.要进行这种计算,书记员就必须用一张表来得到其答案315(2·1/5=13 +1/15),事实上,《兰德纸草书》的第一节就是2被从3到101的奇数相除的结果表(图1.7),而埃及 的书记员们还认识到了,将元乘以2的结果就是用来除2.尽管不知道他们是怎样把这张表构造 出来的,已有几种学术上的设想对这种书记员们的‘方法’提出了解释?.不管怎么说,解问题3需要 两次使用这张表,第一次上面已经讲过了,第二次,就是接下去这一步,计算15的二倍,得1030 (即2·1/15=1/10+1/30).这个问题的最后一步涉及把15加到431030上去,而在此书记员只 是给出了答案.人们再次猜想可能有这类相加问题的详尽的表格.有一份埃及数学羊皮卷,其年代 大约在1600B.C.,里面就有这种加法表的一个简化版本.还有几张其他的涉及单位分数的表,和一 张处理特殊分数2/3的乘法表.这样看来,埃及书记员们用的算术运算的算法包含着用于加、减和 加倍的表格的广泛知识和一套确定的方法,把相乘和相除的问题分解成好几步,而每一步都可以用 这些表来完成.在处理相除时,书记员们常常把加倍的程序换成减半的程序.例如,在求2÷7时,头 几步是 1 7 232 4124 为了在右列中得到总和为2,要求在第三行中把4加到124上去.这样书记员要确定7乘哪个数会 得到4.为此他将已知的结果4×7=28求倒数,得到7的1/28为1/4.然后,他在他的计算中加上一 行284,并将最后两行相加就得总数为:4282,即2÷7=428. 兰德纸草书上的问题21提供了另一种不同的计算:把315补足为1.换言之,我们要确定,在
·10 第1章古代数学 2/3+1/15上要加上什么数才能得到1.书记员注意到15的2/3是10,15的1/15是1,加起来总和为 11.因此他需要一个“乘15能得4”的数.步骤如下. 1 15 10 12 5 3 15 1' 515 4 在这里书记员把第二行加倍就得到第三行.但是,由于他认识到3的1/3是1,他取第三行的三分之 一就得到第四行.这样一来,原问题的解就是:515 书记员们对他们的基本方法还有一些其他的变更,可以举兰德纸草书上的题69为例,其中包 括了用32除80以及随后的校验: 1 32 1 223721 10 35 、2 4534142842 、20 70 1131442 2 个 32 80 3 23 ·21 6 7 2 223721 80 在第二行中书记员利用了他们所采用的记号具有十进小数的性质来求10乘32的乘积.在第五行 中他用了前面提到过的2/3乘法表.于是他发现,由于第二列中从第三行到第五行之和为793,他还 需要在该列中加上2及6才能得到80.这样一来,因为6×32=21以及2×32=7,可知有 21×32=6和7×32=2,如第六行和第七行所示.检验计算表明多次采用了除2的表并显示了 它在做加法上有很大的方便, 巴比伦人在进行算术计算时用了各种表格,这一点有大量的直接证据.许多保存下来的泥板实 际上都是乘法表.不过,从未发现过加法表.因为已经分析过的表超过了200份,我们可以认定不存 在加法表,而书记员们是用心记住这些加法步骤并在需要时直接写下答数的.另一方面,的确有很 多“草稿簿”的例子,在上面记载着书记员在解决一个问题的过程中所作的各种计算.不管怎么讲, 由于巴比伦的数系是一个位值系统,加、减,包括进位与借位的实际算法,很可能与现代的算法很类 似.例如,将23,37(=1417)加到41,32(=2492)上,首先是将37与32相加得(1,09)(=69),这时将 09写下,把1进到下一列.同样23+41+1=1,05(=65),从而最终结果为1,05,09=(3909) 由于这个位值系统是60进位的,乘法表非常庞大.这种表的任何一张上就是列出某个具体的 数比如说9的倍数,从1×9到20×9,然后再给出30×9,40×9,和50×9(图1.8).为了计算34×9, 书记员只要把30×9=4,30(=270)和4×9(=36)这两个结果相加,就可得到结果为 5,06(=306).为了将两位或三位的六十进位数相乘,需要好几张这样的表.巴比伦人用来作这种 相乘的准确的算法一部分积写在什么地方,最后的结果是怎么取得的—一我们都还不知道,但 很可能与我们自己的方法相似. 我们可能以为,为了得到这种完整的表系,巴比伦人应对从2到59的每一个数都造出一张相应
1.3算术计算 ·11· Col.I Col.I CoLL Col.I Obverse Reverse 图1.8一块巴比伦的乘法表(用于数9的)(宾州大学考古系). 的表.然而,事实却并非为此.譬如说,对11,13或17就没有表,却有1,15,30,45的表和44,26,40的 表.尽管我们不能准确地知道,巴比伦人为什么作了这种选择,可我们却知道,除了7这个惟一的例 外,至今所发现的乘法表都是对正则六十进位数一即这样的数,它的倒数是一个有尽的六十进 分数一而言.巴比伦人把所有的分数都看成是六十进制的分数,类似于我们使用十进制分数.就 是说在“六十进制小数点”(记成“;”)后第一位表示六十分之几,接下去一位为3600分之几,等等. 于是48的倒数的六十进制分数就是0;1,15,它表示1/60+15/602,而1,21(=81)的倒数为 0:0,44,26,40,即44/60+26/603+40/60.因为巴比伦人不指明起始0或六十进制的小数点的位 置,最后的这个数就直接写成44,26,40.已经讲过,对这些正则数有相应的乘法表.这种表并不表明 数的绝对大小,也无此必要.巴比伦人用这种表时自然知道,六十进制小数点的位置有赖于所讨论 到的数的绝对大小,所以它的位置最后要根据具体情况来决定 除了乘法表以外,巴比伦人还使用过大量的倒数表.这里复制了其中一张的部分.一张倒数表 就是列出一对一对的数,它们的乘积为1(这里1可代表60的任意次幂),和乘法表一样,这种表中也 只包括六十进制的正则数 30 163,45 48 1,15 320 252,24 1,0456,15 106 401,30 1,2144,26,40 曾经将倒数表与乘法表结合起来做除法.因此,1,30(=90)的乘法表不仅可以用来求该数的 倍数,而且,由于40是1,30的倒数,还可以用它来做除以40的除法.换言之,巴比伦人把50÷4的问 题看成相当于50×4的问题,或者用六十进制的记号,看成相当于50×0:1,30的问题,下面给出了 1,30的乘法表的一部分,用它就得出乘积的结果为1,15(或1,15,00).再适当地确定六十进制小数