



1.算筹记数法
在数字尚未产生之前,结绳记数是人类早期采用的一种表示计数的方法。中国古籍中记载有“民结绳而用之”,或称伏羲“结绳而治”。这大约发生在旧石器时代晚期和新石器时代的早期。《易·九家言》明确地解释了这种方法:“事大,大结其绳;事小,小结其绳。结之多少,随物众寡。”也就是说:每一个结表示一个数或一件事;大事或大数,打大结;小事或小数,打小结;绳结的多少,根据事物多少而定。这种结绳记数方法,不仅可以数数,而且可以把数数的结果记录下来并长期地保存下去。
人类结绳记数或记事的遗风,可以从近代一些边远地区的实物中得到证实。例如,在印加文明所在地秘鲁发现的“奇普”(见图2-1),其中绳结的扭转次数代表数字,单结代表某个大数,结在左边就表示“出库”或者“支付”,结在右边就表示“入库”或者“收入”,这算是一种基本的“结绳记数”。而在琉球群岛也曾呈现一种类似“奇普”的苇草记事绳把(见图2-2),岛上的工人将稻草或者芦苇编织成绳结状,并用不同形式的麦穗表示工资。每种穗饰都表示一个特定的价值单位,每个穗饰的位置不同,因此它们一起组成了一种位置值表示法。一个自由端代表一个单元,一个结代表五个单元。
图2-1 秘鲁的“奇普”
图2-2 琉球群岛的结绳
在我国青海,1974年至1978年出土了一批带刻口的骨片,是新石器时代末期用于记事、记数的实物。在出土的3万余件文化遗物中,有1000余片带有一些刻口的长方形骨片,它们长为2~2.4cm,宽为0.5~1cm,厚约0.1cm。在这些长方形的骨片的长边上,有的一边有刻口,有的两边有刻口,刻口数目少则有1个,多的有8个。每片骨片上刻口的数目均不超过10个。对于这些骨片的研究,一种认为,每个刻口都代表“一”。也有研究认为,这些骨片可能是一种货币,刻口是代表“面值”,骨片作为墓主人的殉葬品。这种解释方法,也同样有记数的意义。
从刻划记数,人类很自然地创造出第一批数字。新石器时代中晚期的遗址(西安半坡、山东城子崖等)中都出现了数字符号。在西安半坡人的遗址(距今5000~6000年)中,发现陶器上刻的符号中有数字符号。商代是中国奴隶制经济发展时期,社会文化形态由彩陶文化进入青铜文化。商代占卜盛行,卜辞刻写在牛的肩胛骨或龟甲上,被称为甲骨文,如图2-3所示。甲骨文中的数字与记数系统已日益定型化。这个记数系统采用了完整的“逢十进一”的十进制。个、十、百、千、万五个十进制的数字(尽管表达形式尚不统一)都能准确无误地表达出来。商代对于数字的表述尚未形成位值制,但在沿袭前人数字符号表示法的基础上,又创造了百、千、万等数字名称。
图2-3 殷墟甲骨文,1983年河南安阳出土
我们现在使用的数系是十进制的位值制记数法,它不仅采用十进制,而且在不同位置上的数码,表示这个数码与10的某个幂次的乘积。因此,这是一种位值进位记数系统。十进位制,不仅需要十个不同的数码(数字),而且还需要同一个数码在不同的数位上,表示出不同单位的数,即用位置来表示数。这种位值制记数法最早出现在中国古代的筹算之中。
算筹(见图2-4)是我国古代人民智慧的结晶,但具体的发明时间已不可考。早在西周初年(公元前11世纪),中国的先民们就在蓍草占卜、演卦中得到启示,发明了用作演算的算筹(简称筹),用以表示数和进行计算。算筹在我国春秋战国时期使用较为频繁,到了秦朝,数学得到了更为蓬勃的发展,这些都与筹算息息相关。据记载,墨子“止楚功宋”的故事里就提到过算筹。
图2-4 1971年陕西西汉墓出土的算筹
“子墨子解带为城,以牒为械,公输盘九设攻城之机变,子墨子九距之。公输盘之攻械尽,子墨子之守圉有余。”这句话描述的是墨子与公输盘(公输盘是鲁国人,常被称为‘鲁班’)会面时使用筹进行沙盘演练的情形。当墨子听说能工巧匠公输盘给楚国制造了云梯,要拿去攻打宋国,他急忙赶到楚国去见楚王说自己制造的反攻城器械可以抵御公输盘的云梯。于是“墨子解下衣带当作城,用竹片当器械。公输盘一次又一次地设下攻城的方法,墨子一次又一次地挡住了他。公输盘的攻城器械都用尽了,墨子的守城办法还绰绰有余。”
据说墨子及他的弟子在路上行走时,人们总能发现他们腰上系着一个布袋。这个布袋就是筹袋,用来盛放这些小木棍、竹片做成的算筹,系在腰部随身携带。当需要计数和计算的时候,便打开布袋,取出算筹,找到一个合适的地方进行计算。他们把这些小木棍或竹片摆来摆去,口中念念有词,名曰“布算”,不一会,就给出答案,常常令旁观者啧啧称奇。
算筹的长度一般为13~14cm,径粗0.2~0.3cm。当时市面上最常见的算筹多用竹子制成,另外也有取材于木头、兽骨等的,更为高级一些的算筹则使用象牙或者贵重金属制成。算筹的摆放方式有纵、横两种形式:
在筹式上摆放数字的方法规定为:个位、百位、万位……上的数用纵式,十位、千位、十万位……上的数用横式,纵横相间,以免发生误会;又规定用空位来表示零。例如,197和1907的筹式分别表示为
南宋数学家秦九韶著的《数学九章》中首次出现“〇”这个占位符,例如,409写成“四百〇九”,505写成“五百〇五”。但它却不读“零”,而读作“空”。到了13世纪,中国数学家又明确地用“〇”表示零,从而使中国记数法完全位值化了。
表示数的符号在历史上经历了漫长的演变过程,一直到1522年,所谓的印度-阿拉伯数码才被世界各国所接受。1859年,我国数学家李善兰在翻译《代微积拾级》时仍然用一、二、三、四等,到1892年才开始采用阿拉伯数码,但数的写法还是竖写,直到20世纪才采用现代写法。但在我国民间,长期流传着一种进位制记数方法——苏州码子,如图2-5所示。
图2-5 消失的符号:苏州码子
苏州码子又称花码、草码、商码等,简称码子,产生于中国苏州,由中国的算筹演变而来。因为苏州码子用毛笔书写便捷,一串数字能连笔写出,可以配合算盘使用,所以曾经广泛用于商业,在账簿和发票等中均有使用。
苏州码子在中国大陆几近绝迹,但在港澳台地区的街市、旧式茶餐厅及中药房偶尔仍然可见。香港小学数学课程中将之称为中国古代数字或中国数码,并于小学五年级教授有关用法。据2021年5月1日《上观新闻》报道,中国第一条铁路——京张铁路(北京——张家口)的青龙桥站,收集到了多块用“苏州码子”标记的石碑。例如,图2-6中右前一石碑代表是“坡道牌”(〣三上,33上坡),右前二石碑代表的是“里志牌”(〥〩,59km处)。
图2-6 京张铁路青龙桥站内的“苏州码子”石碑
作为中国人自主设计修建的第一条铁路,京张铁路对于中国人来说意义非凡,“苏州码子”石碑的发现,就是最直接、最有力的佐证。京张铁路开通时采用的标志共有五种,分别是里志牌、桥志牌、坡道牌、放汽牌和道拨牌。早期标志上的数字均用“苏州码子”进行书写,有着非常鲜明的时代特点。
在乘除法方面,中国在公元前7世纪就普及了能够进行乘除法的口诀“九九乘法表”,并一直沿用至今。2002年湘西出土的约3.8万枚里耶秦简中,就有3枚保存了十分完整清晰的“九九乘法表”(见图2-7)。据考古专家称,这是目前全世界发现最早的“乘法口诀表”实物,足可改写世界数学历史。关于“乘法口诀”,还有一则小故事。
图2-7 里耶秦简“九九乘法表”
春秋战国时期,齐桓公发出告示招贤纳士。有一天,一位书生模样的人来应招,就将“九九八十一……六六三十六……二二而四”的“乘法口诀”背了一通。在场的大臣们都觉得好笑,齐桓公也笑着说:“九九歌”也算一技之长吗?此等技能,我们这里连小孩子都会。应招人对答:假若你连我这个能背诵“乘法口诀”的人都重视,能够以礼相待,还怕比我高明的人不来吗?果然,一个月后,四面八方的贤士接踵而来了。
由此可见,2600多年前的齐桓公时期,“乘法口诀”已经很常用了。秦始皇统一中国后,里耶秦简“九九乘法表”已成为当时的数学教材,非常流行了。对此,三国时代的数学家赵爽说:“九九者,乘除之源。”
2.干支记数法
干支记数法是中国古代特有的序数记数方法,并且沿用至今。它是一种特有的六十进制的记数方法。干,就是十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。支,是指十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。将10个天干和12个地支搭配起来,成为甲子、乙丑、……、癸亥,共60个不同的干支名,称为六十甲子(见表2-1)。
表2-1 干支记数法
用10个天干、12个地支相互循环搭配,含有组合数学的意味。由于天干与地支数目相差为2,循环搭配起来,逢单的甲、丙、戊、庚、壬5个天干,只能与逢单的子、寅、辰、午、申、戌这6个地支相配;逢双的乙、丁、己、辛、癸5个天干,只能与逢双的丑、卯、巳、未、酉、亥这6个地支相配。逢单的5个天干与逢单的6个地支,搭配成5×6=30个不同的干支名;逢双的5个天干与逢双的6个地支又搭配成30个不同的干支名。所以不同的干支名,总共有60个。
在中国的历史上,夏代帝王中已有孔甲、履癸等带有天干的名字,商代各帝王的名字中第二个字也是天干中的某一个“干”字,如盘庚、武丁、祖甲、太丁、帝乙、帝辛等。帝辛就是殷纣王的名字。这表明十天干先于十二地支出现。在商代的甲骨文中出现了大量较为完整的干支表(见图2-8),这些干支表尽管都有些残损,但从排列上看,全是由上到下竖行排列,而且都是甲起头,10对一行,排列整齐,这说明商代人已有了60对干支一循环的序数概念。
图2-8 甲骨文上的干支表拓片
中国早在商代就使用干支纪日法,据考证,甲骨文中的干支表可能就是用来记录日序的。殷商的帝王们大多以其出生的那一天的干支名来命名。史料上对禹结婚的过程也用干支进行了描述。《尚书·皋陶谟》记夏禹的话:“予娶涂山,辛壬癸甲。启呱呱而泣,予弗子,惟荒度土功。”这就是说:他娶涂山的女儿为妻,结婚时在家待了辛、壬、癸、甲四天,就又出外忙于治水,后来生了儿子启,他也顾不上照顾和关爱儿子,全力完成了平治水土之功。据考证,中国第一次记录的日食事件发生在春秋时期,具体为鲁隐公三年(即公元前720年)二月己巳日。根据现代科学推算,这个记录是准确的。而且自那以后,各代史书就开始连续使用干支纪日,直至清末,2600多年从未间断,这是世界上使用时间最长的纪日法。
干支纪年,始于东汉初年,是从东汉《四分历》颁布实行的那一年——汉章帝元和二年(85年)开始的,这一年的纪年干支是甲申。干支纪年,我们今天仍用在农历纪年上,近代史上许多重大事件,也常以该事件发生的干支年号来命名,如“甲午战争”“辛丑条约”“庚子赔款”“辛亥革命”等。
把公历纪年换算成中国的干支纪年,可以使用换算公式 n = x -3-60 m ,这里 n 是干支表中的序数, x 是所求年的公历纪年数, m =0,1,2,…,取整数值,适当选择 m 的值,使0< n ≤60。得到 n 后就可立即从表2-1中查出 x 对应的干支来。例如,求1894年的干支,这里 x =1894,选取 m =31,则 n =1894-3-60×31=31。从干支表中查出,对应的干支是甲午,这正是甲午战争发生的年代。我国宋代著名词人苏轼在其词作《水调歌头·明月几时有》的开篇便写道:“丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由。”这里“丙辰”就是干支纪年,是指宋神宗熙宁九年,即1076年。按照上述公式, x =1076,选取 m =17,则 n =1076-3-60×17=53。从干支表2-1中查出,对应的就是丙辰年。
这里值得注意的一点是,由上述公式只能取到公元4年以后的 x ,而公元4年以前的干支纪年的换算可由以下方法得到:将公元元年记为+1年,公元前1年记为0年,公元前2年记为-1年,公元前3年记为-2年,……把公元4年以前的 x 值按这种方法取值,而且 m 也可以取负整数,那么,上述换算仍旧成立。例如,求公元前221年的干支。这时,依规定 x =-220,取 m =-4,则 n =-220-3-60×60×(-4)=17。从表2-1中查出,公元前221年的干支为庚辰,这正是秦始皇称帝的那一年。
用干支纪日、纪年的同时,我国还用干支纪月、纪时。古人将一昼夜划分为十二个时辰,以十二地支表示:子时(晚上11—1点),丑时(1—3点),寅时(3—5点),卯时(5—7点),辰时(7—9点),巳时(9—11点),午时(11—午后1点),未时(午后1—3点),申时(午后3—5点),酉时(午后5—7点),戌时(晚上7—9点),亥时(晚上9—11点)。后来又将一个时辰分为初、正两部分,如子初即等于晚上11点,子正即等于晚上12点。这样就和现在的24小时制大体对应起来了。今天我们所说的1个“小时”,也就是古代半个时辰的意思。中国人习惯上用年、月、日、时来记录人的出生时间,而年、月、日、时的干支名分别由两个字表示,总共八个字,旧时人们常称之为生辰“八字”。这个生辰“八字”,只是记录一个人出生的年、月、日、时的干支名,起着纪时的作用,并没有更多的意义。宿命论者认为“八字”决定人的一生命运,这是一种缺乏科学依据的迷信说法。
古巴比伦人生活在两河流域——“美索不达米亚”(意为两河之间的地方)。两河流域是指发源于现今土耳其境内的底格里斯河和幼发拉底河的广大地区,是今日伊拉克的一部分。大约公元前30世纪,两河流域的苏美尔人发明了“楔形”文字,又称“箭头字”。这些文字符号因刻写的轻重不同而成“木楔”的形状,故而得名。古巴比伦最具代表性的《汉谟拉比法典》,全文包括8000多个楔形文字。
古巴比伦人的记数系统是六十进制,60以内的数用简单累加制。所谓“累加制”,是同一单位用同一符号累加,达到较高单位时才换一个新符号。楔形数字1~59如图2-9所示。
图2-9 楔形数字1~59
在公元前30世纪到公元前20世纪之间,古巴比伦人发展了应用定位原则的六十进位制的数系。但是,这种数系是不完全的。一方面,60以上的数依定位原则写出;另一方面,60以内的数则按照以十进制的简单分群数系写出,例如:
公元前300年之后,古巴比伦人引入零符号,它由两个小的斜楔形符号组成。但它只用于表示在六十进位制的数内的零,而没有用于数尾。例如,在古巴比伦数系中,
对于小于1的数,古巴比伦人用六十进制分数表示,即用60乘幂(如60、60
2
等)的倒数和表示。例如,将
表示为
。
约公元前3100年,古埃及形成了统一的、法老专制的奴隶制国家。截至公元前332年古埃及被古希腊所征服,共经历了30个王朝,古埃及人主要在尼罗河中下游的狭长河谷地带活动。大约公元前3000年,古埃及人开始使用象形文字,这些文字被刻写在石头、木头和纸草书上。纸草是尼罗河泛滥后所形成的沼泽地中生长的一种植物,很像芦苇。古埃及人把它纵向劈成小条,经蒸制、压平使它们粘在一起连成长幅,卷在杆子上形成卷轴,用作书写的“纸”。因为纸草容易干裂成粉末,不易保存,所以古埃及的纸草书很少保存下来。
现在对古埃及数学的认识,主要是从两本纸草书中获得的。一本是保存在莫斯科国立造型艺术博物馆的“莫斯科纸草书”,该书约成书于公元前18世纪。另一本是1858年由在埃及访问的英国学者莱因德发现的,被称作莱因德纸草书(公元前1650年)。莱因德纸草书被认为是古埃及数学最重要的文献来源,1864年莱因德纸草书被收藏于伦敦大英博物馆。
古埃及象形文字的数系不是位值制,该记数系统中的每个数字都由一组符号决定,其数值与所在数字中的位置无关。古埃及象形数字如图2-10所示。古埃及人用形如“轭”的符号来表示10,用一圈绳子表示100,用一枚莲花表示1000,用一个指头表示10000,用一只青蛙表示100000,用举起双臂端坐着的神祇形象来表示1000000。任何数都可以用这些符号相加的方法来表示,其中每一个符号重复必要的次数。例如,13015用古埃及象形数字表示为
图2-10 古埃及象形数字
另外,古埃及人比较习惯于从右往左写数字,而我们还是按照从左往右的书写习惯来写这个数。
在古埃及已经有了分数,但除去几个特殊的分数有单独记法外,其余都是单分数,即分子是1的分数,也称单位分数(见图2-11),其他分数都化为单位分数来进行计算。
图2-11 古埃及的分数表示方法
莱因德纸草书的内容涉及各种数学问题,包含分数、代数和金字塔几何学,还有测量、建筑和各种实用数学。书中记载有分数表,记录了分子为2、分母为5至101的奇数的所有分数,它们都被表示成单位分数的和,但书中没有记载这种分解是用什么方法进行的。例如:
古埃及人通过逐次加倍的方法来完成乘法、除法运算,例如,要想计算9×8就得将其分解为[(9×2)×2]×2或9×(2+2+2+2),做除法时则将除数逐次加倍,使之等于被除数或还余多少的程度即可。
莱因德纸草书上最令人感兴趣的是编号为79的问题,这个问题可以说是数学的一个谜题,如图2-12所示。现在把它称为“七间房子的故事”:“一个庄园有7间房子,49只猫,343只老鼠,2401棵麦穗,16807赫克特粮食。以表格形式列出上述信息,并包括它们的总数。”书中附有解答:2801×7=19607,用现在的等比数列求和很容易求出这个答案,但古埃及人在4000多年前就掌握了这种特殊的求和方法。
图2-12 莱因德纸草书第79号问题
这个有趣的问题也引发了无数后人更多的解读。例如,中世纪数学家斐波那契在《算盘书》(1202年)中写了这样一个问题:“7个老妇同赴罗马,每人有7匹骡,每匹骡驮7个袋,每个袋盛7个面包,每个面包带有7把小刀,每把小刀放在7个鞘之中,问各有多少?”
古代俄罗斯民间流传:“7个老头走在路上,每个老头拿着7根手杖,每根手杖上有7个树杈,每个树杈上挂着7个竹篮,每个竹篮里有7个竹笼,每个竹笼里有7只麻雀,总共有多少只麻雀?”
古老的英国童谣:“我赴圣地爱弗西,途遇妇女数有七,一人七袋手中提,一猫七子紧相依,妇与布袋猫与子,几何同时赴圣地?”
更有趣的是,我国古代书籍里也记载了一个很相似的题目:“今有出门望有九堤,堤有九木,木有九枝,枝有九巢,巢有九禽,禽有九雏,雏有九毛,毛有九色。问各几何?”
玛雅文明起源于约公元前10世纪,覆灭于约公元16世纪。古代玛雅人的数系是16世纪在墨西哥被发现的。玛雅文明一直披着神秘的外衣,直到近些年来,玛雅石碑上书写的符号才逐渐开始被解读。玛雅人记数系统是二十进制,20以内的数也是采用简单累加制。研究认为法定的玛雅年是360天,因此其数系本质上是二十进制。古代玛雅数字(见图2-13)仅用三个符号就组成了所有数字,这三个符号为:贝壳符号(0)、点符号(1)、横线符号(5)。玛雅人用这三个符号就可以演变出数字0~19。例如,将19写作3道横线上另加4个点。大于19的数字以20为权累进,任何数的下方加一个贝壳,就表示这个数扩大到20倍。例如,20就写作一个点(代表20),下加一个贝壳形;而33写作一个点,下加一个13(3个点+两道横线)。古代玛雅人没有计算符号,其数字是自上而下排列的,图2-14是806与16125的玛雅记法:
图2-13 玛雅数字
图2-14 玛雅数字:806与16 125
与古代中国、巴比伦、玛雅人不同的是,古罗马的记数法采用的是非进位制。在罗马记数系统里,采用的是五进累加制:Ⅰ—1、Ⅴ—5、Ⅹ—10、L—50、C—100、D—500、M—1000。在表示其他数时,若大单位在左,小单位在右,则表示累加,如Ⅶ(7);若大单位在右、小单位在左,则表示减法,如Ⅳ(4)。我们比较熟悉的罗马数字1~9为Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9,它们现在仍出现在钟表表盘上,用来表示时数。
罗马数字系统里没有表示零的数字,据说当0通过阿拉伯传入欧洲时,受到了罗马教会的反对。教皇认为:罗马数字是上帝创造的,不允许0的存在,这个邪物加进去会玷污神圣的数。一位罗马学者因偷偷地传播0而被教会投入监狱,施以酷刑,结果惨死狱中。由于罗马数字里面没有0,在表达大数时很不方便。例如,151记为CLI,1515记为MDXV,2021记为MMXXI,2869记为MMDCCCLXVIIII。罗马数字因书写复杂,后人很少采用。但在钟表表盘、公共纪念性建筑及电视节目制作年份中仍然可以看到罗马数字的应用。
我们现在常用的阿拉伯数字0,1,2,3,4,5,6,7,8,9实际上是印度人创造的。古印度地处印度河、恒河的两河流域的南亚次大陆及其邻近的岛屿,其文明是在农业发达的基础上发展起来的。古印度人一开始使用的就是十进制,早在公元前1200年,古印度的《吠陀经》里面就记载了有关十进制数字的计算。而在公元前3世纪古印度的一些石刻上可以找到数的记号,并且数1,2,3,…,9都有了单独的记号,不过当时还没有出现0(见图2-15)。
图2-15 公元前3世纪左右的印度婆罗门数字
后来印度人又正确使用了零,并在这个基础上形成了整套计算法则。“印度-阿拉伯数字”及其记数制后来经由阿拉伯传到西方并传遍世界。
据考查,世界上大多数地区采用的是十进位制。美国数学家易勒斯曾对美洲原住民各族的307种记数系统进行调查,结果显示,其中146种采用十进制,106种属于五进制或二十进制,其余55种则采用其他不同的进位制。与古代其他民族相比,中国古代创造的十进位值制的算筹记数法,是最先进、最美妙的。中国科技史专家李约瑟指出:“在商代甲骨文中,十进位制已经明显可见,它比古巴比伦和古埃及的数字系统更为先进。虽然古巴比伦和古埃及的数字系统均具有进位概念,但中国商代创造的十进位值制算筹体系取得了巨大进步——仅用不超过9个算筹符号即可表示任意量值。”这也促进了我国古代数学算法的快速发展。
最后,图2-16展示了世界几个主要早期文明的“记数系统”,以供参考
。
图2-16 早期记数系统