九章算术《九章算术》成书于西汉末到东汉初之间,约公元一世纪前后,《九章算术》的内容十分丰富,全书采用问题集的形式,收有246个与生产、生活实践有联系的应用问题,其中每道题有问(题目)、答(答案)、术(解题的步骤,但没有证明),有的是一题一术,有的是多题一术或一题多术。这些问题依照性质和解法分别隶属于方田、粟米、衰分、少广、商功、均输、盈不足、方程及勾股九章如下表所示。原作有插图,今传本已只剩下正文了。《九章算术》的作者不详。很可能是在成书前一段历史时期内通过多人之手逐次整理、修改、补充而成的集体创作结晶。由于二千年来经过辗转手抄、刻印,难免会出现差错和遗漏,加上《九章算术》文字简略有些内容不易理解,因此历史上有过多次校正和注释,其中重要的有:《九章算术》的主要内容,可分成算术、代数和几何三部分。一、算术部分1.分数《九章算术》中有比较完整的分数计算方法,包括四则运算,通分、约分、化带分数为假分数(我国古代称为通分内子,“内”读为纳)等等。其步骤与方法大体与现代的雷同。分数加减运算,《九章算术》已明确提出先通分,使两分数的分母相同,然后进行加减。加法的步骤是“母互乘子,并以为实,母相乘为法,实如法而一”这里“实”是分子。“法”是分母,“实如法而一”也就是用法去除实,进行除法运算,《九章算术》还注意到两点:其一是运算结果如出现“不满法者,以法命之”。就是分子小于分母时便以分数形式保留。其二是“其母同者,直相从之”,就是分母相同的分数进行加减,运算时不必通分,使分子直接加减即可。关于分数乘法,《九章算术》中提出的步骤是“母相乘为法,子相乘为实,实如法而一”。《九章算术》对分数除法虽然没有提出一般法则,但算法也很清楚。2.最大公约数与最小公倍数《九章算术》中还有求最大公约数和约分的方法。求最大公约数的方法称为“更相减损”法,其具体步骤是“可半者半之,不可半者,副置分母子之数,以少减多,更相减损,求其等也。以等数约之。”这里所说的“等数”就是我们现在的最大公约数。可半者是指分子分母都是偶数,可以折半的先把它们折半,即可先约去2。不都是偶数了,则另外摆(即副置)分子分母算筹进行计算,从大数中减去小数,辗转相减,减到余数和减数相等,即得等数。如方田章第六题:“又有九十一分之四十九,问约之得几何”。将更相减损这一运算写成现代的图式就是法实质上是辗转相减法。辗转相减法与欧几里得的辗转相除法在步骤上虽然略有不同,但在理论上却是一致的。《九章算术》在分数的加减运算中,已知用最小公倍数作公分母,例如少广章第六题相当于分数的运算,这个公分母420正是1,2,3,4,5,6,7的最小公倍数。3.比例算法在《九章算术》的第二、三、六等章内,广泛地使用了各种比例解应用问题。粟米章的开始就列举了各种粮食间互换的比率如下:“粟米之法:粟率五十,粝米三十,粺米二十七,糳米二十四,……”(图1-23)这是说:谷子五斗去皮可得糙米三斗,又可舂得九折米二斗七升,或八拆米二斗四升,……。例如,粟米章第一题:“今有粟米一斗,欲为粝米,问得几何”。它的解法是:“以所有数乘所求率为实,以所有率为法,实如法而一”。用现代的方式来表达,即为公式:或所求数∶所有数=所求率∶所有率。这个题是欲将粟米换成粝米,其中“粟米一斗(十升)”是“所有数”,粝米数即为“所求数”,按规定“粟率五十”为“所有率”,粝米30为“所求率”。于是得所求数为10×30÷50=6(升),这就是说一斗谷子可以砻得六升糙米。因而可以根据物与物的比率,再由今有数(所有数)即可求得未知数据(所求数),因为这类应用问题大都依据“今有”的数据,问所求的数,因此我国古代数学家刘徽就用“今有术”作为这类比例问题解法的专用名词。在《九章算术》中,今有术应用特别广泛,是一种普遍的解题方法。与比率有关的其他一些算法一般都是在今有术的基础上演化而来的。《九章算术》中另一个常用的比率算法是衰分术,所谓“衰分”就是差分。比例分配的意思,它是古代处理配分问题的一般方法,“衰分术曰,各置列衰(即所配的比率),副并(得所配比率的和)为法,以所分乘未并者各自为实,实如法而一”,刘徽“注”说:“列衰各为所求率,副并(所得的和)为所有率,所分为所有数”,用“今有术”计算,就可以得到各所求数。例如衰分章第二题:“今有牛、马、羊食人苗,苗主责之粟五斗,羊主曰,我羊食半马(所食),马主曰,我马食半牛(所食),今欲衰偿之,问各几何”,依照羊主人、马主人的话,牛、马、羊所食粟相互之比率是4∶2∶1,就用4、2、1各为所求率,4+2+1=7《九章算术》中有相当复杂的比例问题,例如均输章中,既有按正比“列衰”也有按反比“列衰”的比例分配问题等等。因此《九章算术》已包括了现代算术中的全部比例的内容,形成了一个完整的体系。印度于五、六世纪间有“三率法”的算法。所谓三率法相当于术。印度三率法传入阿拉伯国家,再传到西欧各国,于是欧洲在更晚的时期也有类似的算法,欧洲商人很重视这种算法,称它为“金法”。从《九章算术》的“今有术”逐渐演变到现在教科书中的比例,已有二千年的发展历史。4.盈亏问题《九章算术》第七章“盈不足”专讲盈亏问题及其解法其中第一题:“今有(人)共买物,(每)人出八(钱),盈(余)三钱;人出七(钱),不足四(钱),问人数、物价各几何”,“答曰:七人,物价53(钱)。”“盈不足术曰:置所出率,盈、不足各居其下。令维乘(即交错相乘)所出率,并以为实,并盈,不足为法,实如法而一……置所出率,以少减多,余,以约法、实。实为物价,法为人数”。如以算筹演算大致如图1-24所示。用现代的符号来表示:设每人出a1钱,盈b1钱;每人出a2钱,不足b2钱,求物价u和人数v。依据术文得下列二公式:当然我们还可以算出每人应该分摊的钱数因此上述的盈不足术实际上包含着三个公式。《九章算术》的盈不足章的最前四个问题是正规的盈亏问题。而第五题是“两盈”问题,第六题是“两不足”问题则分子就得相减了,都是“以少减多”来进行的,第七题是“盈、适足”,第八题是“不足,适足问题。它们的解法也可以在盈不足术的基础上分别提出适当的公式。盈不足章的第9到第20题,是一般的算术应用题,有些问题还相当难,初学者不易解答。如果通过两次假设(分别各假设一个答数)然后分别验算其盈余和不足的数量,这样任何算术问题都可以改造成为一个盈亏问题来解。因此盈不足术是中国数学史上解应用问题的一种别开生面的创造,它在我国古代算法中占有相当重要的地位。盈不足术还经过丝绸之路西传中亚阿拉伯国家,受到特别重视,被称为“契丹算法”,后来又传入欧洲,中世纪时期“双设法”曾长期统治了他们的数学王国。二、代数部分《九章算术》中的代数内容同样很丰富,具有当时世界的先进水平。1.开平方和开立方《九章算术》中讲了开平方、开立方的方法,而且计算步骤和现在的基本一样。所不同的是古代用筹算进行演算,现以少广章第12题为例,说明古代开平方演算的步骤,“今有积五万五千二百二十五步。问为方几何”。“答曰:二百三十五步”。这里所说的步是我国古代的长度单位。“开方(是指开平方,由正方形面积求其一边之长。)术曰:置积为实(即指筹算中把被开方数放置于第二行,称为实)借一算(指借用一算筹放置于最后一行,如图1-25(1)所示用以定位)。步之(指所借的算筹一步一步移动)超一等(指所借的算筹由个位越过十位移至百位或由百位越过千位移至万位等等,这与现代笔算开平方中分节相当如图1-25(2)所示)。议所得(指议得初商,由于实的万位数字是5,而且22<5<32,议得初商为2,而借算在万位,因此应在第一行置初商2于百位,如图1-25(3)所示)。以一乘所借一算为法(指以初商2乘所借算一次为20000,置于“实”下为“法”,如图1-25(4)所示)而以除(指以初商2乘“法”20000得40000,由“实”减去得:55225-40000=15225,如图1-25(5)所示)除已,倍法为定法,其复除,折法而下(指将“法”加倍,向右移一位,得4000为“定法”因为现在要求平方根的十位数字,需要把“借算”移至百位,如图1-25(6)所示)。复置借算步之如初,以复议一乘之,所得副,以加定法,以除(这一段是指:要求平方根的十位数字,需置借算于百位。因“实”的千位数字为15,且4×3<15<4×4,于是再议得次商为3。置3于商的十位。以次商3乘借算得3×100=300,与定法相加为4000+300=4300。再乘以次商,则得:3×4300=12900,由“实”减去得:15225-12900=2325。如图1-25(7)所示,以所得副从定法,复除折下如前(这一段是指演算如前,即再以300×1+4300=4600向右移一位,得460,是第三位方根的定法,再把借算移到个位,如图1-25(8)所示;又议得三商应为5,再置5于商的个位如图1-25(9)所示,以5+460=465,再乘以三商5,得465×5=2325经计算恰尽如图1-25(10)所示,因此得平方根为235。)上述由图1-25(1)~(10)是按算筹进行演算的,看起来似乎很繁琐,实际上步骤十分清楚,易于操作。它的开平方原理与现代开平方原理相同。其中“借算”的右移、左移在现代的观点下可以理解为一次变换和代换。《九章算术》时代并没有理解到变换和代换,但是这对以后宋、元时期高次方程的解法是有深远影响的。至于开立方,因篇幅的关系这里从略。2.二次方程问题《九章算术》勾股章第二十题:“今有邑方不知大小,各中开门,出北门二十步有木,出南门十四步,折而西行一千七百七十五步见木,问邑方几何。”“答曰:二百五十步”。已知:如图1-26所示,CD=20步,EB=14步,BF=1775步,求CE。按题意,得或EC(CE+CD+EB)=2CD·BF。设x=EC。经整理,得x2+34x=71000。这是一个解数字二次方程的问题。这种二次方程有一个正系数的一次项在二次项后面,我国古代称这个一次项为“从法”。《九章算术》少广章开平方术虽然专为开整平方而建立,但是也可以利用来解一般的二次方程问题。解这种二次方程只需开带“从法”的平方,或简称为“开带从平方”。从而即可求得方程的正根。因此上述勾股章第20题的解法为:“术曰以出北门步数乘西行步数倍之,(2CD·BF=2×20×1775=71000)为实,并出南门步数为从法(20+14=34),开方除之,即邑方。”现列出开带从平方的筹算步骤如图1-27所示。(注:为了不易搞错,空位补上0)如果我们将上述开带从平方的演算过程与55225的开平方的演算过程作一比较的话,我们就可以发现:在55225开平方过程中,议平方根的第二位和第三位数字时,所列的算式是一个有“从法”的开方式相当于我们分别用开带从平方的方法解二次方程:不过要注意的是前者的正根是10x2=35,而后者的正根是x3=5。3.多元一次方程组及其解法《九章算术》方程章中所谓“方程”是专指多元一次方程组而言,与现在“方程”的含义并不相同。《九章算术》中多元一次方程组的解法,是将它们的系数和常数项用算筹摆成“方阵”(所以称之谓“方程”)。消元的过程相当于现代大学课程高等代数中的线性变换。方程章第一题:“今有上禾(指上等稻子)三秉(指捆)中禾二秉,下禾一秉,实(指谷子)三十九斗;上禾二秉,中禾三秉,下禾一秉,实三十四斗;上禾一秉,中禾二秉,下禾三秉,实二十六斗。问上、中、下禾实一秉各几何”,这一题若按现代的记法。设x、y、z依次为上、中、下禾各一秉的谷子数,则上述问题是求解三元一次方程组:《九章算术》用算筹演算:“方程术曰,置上禾三秉,中禾二秉,下禾一秉,实三十九斗,于右方。中、左行列如右方(图1-28)以右行上禾徧乘(即遍乘)中行而以直除(这里“除”是减,“直除”即连续相减。)……(引文下略)”。现将遍乘直除法解方程组的过程,按算筹演算如图1-29所示:这题的答案《九章算术》方程章第一题“答曰:上禾一秉,九斗四《九章算术》方程章中共计18个题,其中二元的8题,三元的6题,四元、五元的各2题都用上述的演算法解决,直除法是我国古代解方程组的最早的方法。多元一次方程组解法