“数学,如果正确看待,不仅拥有真理,也拥有至高的美。”

—— 罗素(Bertrand Russell)

印度让数字学会了走路,波斯与阿拉伯世界让它学会了远行:一路靠翻译、靠商队、靠一代代抄写员的灯光,从恒河流域走到两河流域,又从巴格达走向更远的地方。但世界上还有另一条河流,从一开始就没有加入这场旅行——它没有借用谁的符号,也没有等待谁的译本,而是在自己的案几与官府之间,一点一点把算法磨了出来。

那是唐宋帝国治下的中国。这是一个人口以千万计、赋税以石斗计、公文以日计的国家:南北运河把粮食从江南运到关中,一路要经过船闸、堤坝与仓廪的层层核算;科举把读书人筛选进各级官府,官府再靠账册、田契与户籍维系着一个庞大帝国的日常运转;边疆屯田要算,水利工程要算,历法要算,连寺院的田产与赋役也要算。它没有公共广场来辩论"为什么",却有一张张案几在回答"怎么办";没有把数学写成誓言的传统,却把它写成一种能让国家继续运转的本领。中国古代数学的故事,正是从这种"必须算对"的现实压力里生长出来的。

一、竹简与算筹:两汉至魏晋南北朝的第一次爆发

真正决定中国数学走向的,并不是卜辞与卦象,而是更为朴素、也更为严厉的东西:帝国的日常运转。殷商把数字刻在裂纹旁边,是为了让神意可以被追溯;到了汉代,数字从祭坛走上案几,是为了让国家能够正常运转。刻痕解决了证据保存的问题,但帝国一旦扩张,速度便成为另一种生存条件——不可能永远依靠在骨头上刻字来记录信息,需要更快的载体、更快的运算方法,以及可以训练大批人员掌握的固定流程。

于是,竹简与算筹在这一时期登场。在当时的地方官署里,处理田亩、税赋、粮仓、徭役等事务的小吏,关心的并非宇宙的本原,而是几行具体的数字:田亩是否与登记相符,仓储是否能够结清,徭役分配是否公平。一旦算错,代价往往不是学术上的难堪,而可能是一乡的粮食被错误调拨,一户人家被多征赋税,一段河堤的预算被严重误判。在这样的现实里,数学的可靠性首先是一种社会性的信誉——不出重大差错,才配被人信任。

算筹把十进制从一种"写法",推进为一套真正的"算法":横竖交替排列,各就其位,位置决定数值;空位不必特意标示,只需保持空缺,便已经表达出"零"这一概念。由此,庞大的数字不必依靠冗长的文字堆砌来表示,而是可以被摆放、移动,进行加减运算,把原本看不见的数量关系,转化为看得见的排列秩序。更重要的是,算筹使运算的每一个步骤都公开可见:进位与退位的过程一目了然,任何人都能够查看,也都能够复核。中国数学的核心特质,正是在这一阶段确立下来的:方法要能被执行,步骤要能被复核,结果要能被回代检验。它并不依靠公开辩论来维系自身的权威,而是依靠可靠的流程赢得使用者的信任。

在这样的基础上,几位对后世影响深远的数学家先后出现:孙子处理的是周期性问题,刘徽处理的是计算过程中的误差,祖冲之处理的是精度的极限。三者各有侧重,却共同勾勒出这一时期算法文明的基本轮廓。

孙子所面对的,是现实生活中大量存在的周期性问题:赋税征收有周期,轮班值守有周期,巡逻检查有周期,集市贸易也有周期。真正棘手的,并不是应对单一的周期,而是当多个周期条件同时叠加,彼此又互不相同时,该如何找到一个能够同时满足所有条件的答案。孙子给出的,是一套先拆解、再合拢的运算程序:先把各项约束条件分别处理,提取出各自的局部信息;再按照一定的顺序,把这些局部信息重新组合,直到得出一个在每一条约束下都能够成立的结果。这套方法的可靠性,并不依赖于提出者的权威,而依赖于回代验算——只要把结果代入每一条原始条件重新核验,都能够成立,这套算法便如同一台机器,任何人依照步骤操作,都能得到同样的输出。这一方法后来被概括为"中国剩余定理",长期应用于历法推算等实际事务之中。

刘徽的工作,更接近一位严格的审计者:他把前人留下的算法逐一摊开检验,追问每一步操作的依据是什么,一旦出错,问题究竟出在哪一步,是否存在更加稳妥的表述方式。他把数学从"会算"推进到了"可审查"的阶段。当他转向圆的研究时,采用了一种极为朴素、也极为持久的方法来逼近圆周率:即"割圆术"——把圆逐步转化为多边形,不断增加多边形的边数,使其与圆的差距不断缩小,误差被一点一点地压缩。这并非依靠某一刻的灵感突现,而是依靠长期、耐心的重复计算。这种方法的气质与帝国治理颇为相似:并不指望一次性把问题彻底解决,而是追求每一步都比前一步更加可靠。

祖冲之在后世的叙述中,常常仅以"355/113"这一数值被简要提及,但这个分数背后,实际凝聚着长期而扎实的运算积累。在没有现代数学符号、没有微积分方法、也没有计算工具的年代,能够把圆周率的近似值推进到如此精确的程度,靠的并非某种突如其来的灵感,而是整条算法传统长期积累的结果。这体现出一种朴素而坚韧的文明气质:不依靠夸张的宣言来彰显成就,而依靠精度本身,把自己的成果稳稳地留在历史之中。

至此,中国数学史上的第一次爆发期已然成形:这并非某一项伟大发现的突然出现,而是一条制度与算法相互促进的链条走向成熟——算筹使数值的位置具有了可操作性,竹简使运算的步骤得以被稳定传承,官署与历法机构的日常运转,则要求误差必须被持续地驯服。与此同时,欧洲正缓缓进入中世纪:数学并未彻底消失,却更多被收藏于修道院的书架之中,时明时暗,等待新的翻译网络与城市复兴将其重新唤醒。而在东方,算法则在官署与工地之间持续演进,如同不断添薪的炉火,从未真正熄灭。

二、工地逼出方程:唐代的王孝通

唐代是这一发展脉络中一个颇具代表性的转折点,因为它清楚地表明:中国数学的"代数化",往往并非源自抽象符号自身的演进,而是源自工程实践中具体关系的现实需要。王孝通正是这一趋势的代表人物。

当时的城垒需要修筑,桥台需要架立,堤坝需要加高,土方需要精确调配。工程实践从不满足于"大致如此",而只关心"是否足够"。一旦对这些关系稍加深入考察,便会发现单纯的加减乘除已经不敷使用:形体之间关系一旦变得严密,未知量与高次幂的关系便随之出现,立方、开方、比例等运算彼此交织,难以回避。王孝通的意义,正在于他把这种由现实需要所催生的方程问题,清晰地记录在了文本之中——这并非"数学家突然对三次方程产生兴趣",而是工程实践本身,把研究者推到了方程面前。

这一阶段的意义,在于承上启下:它把两汉魏晋时期算法体系走向成熟的进程,引向了宋元时期代数方法的全面展开。可以说,工程实践已经把通往方程与未知量研究的大门推开了一道缝隙,而宋元数学家们所做的,则是把这扇门后的整个房间彻底照亮。

三、压力锅里的巅峰:宋元群像与秦九韶

历史的脉络最终来到了宋代。宋代并非最为安定的时期,却是技术密度异常之高的时期:商业活动更为活跃,城市结构更为复杂,财政状况更为紧张,军事需求更为急迫,水利与工程事务也更为频繁。这一时期的社会状况,颇似一口压力锅:外部压力越大,内部的工具与方法便越是被迫升级。若此时的数学仍然停留在"会算"的层面,便如同用一把小刀去修筑堤坝,远远不能满足实际需求。当时所需要的,是一套能够处理多重约束条件、能够应对大规模调度问题、并能把复杂问题转化为可重复操作流程的算法体系。宋元数学之所以被普遍视为中国古代数学的高峰,正是因为它把这套体系推进到了"可制造、可训练、可复制"的程度——它所依靠的,不是一时的聪明才智,而是一整套完整的程序传统。

在秦九韶之前,还有几位数学家为这一传统的成熟作出了各自的贡献。贾宪把开方运算中系数的处理方式加以系统整理,并逐步推进求解精度;杨辉则把这些算法进一步整理,使其更适合大规模的教学与训练,而不只依赖于个别天才;李冶发展出"天元术",把几何图形之间复杂的关系,转化为代数方程之间的关系;朱世杰则发展出"四元术"与消元方法,使涉及多个未知量、多个方程的复杂问题,也能够被系统地处理。这几位数学家的贡献各有侧重,共同为宋元数学的高峰奠定了坚实的基础。

在这一群体之中,秦九韶最能代表这条传统在宋代现实压力之下所达到的成熟形态:他把数学写成了一套能够真正运转的机器。

秦九韶本人的经历,并非一段清白无瑕的传记式叙事,其中夹杂着官场的纠葛与人生的种种曲折。但正因如此,他反而更能代表中国数学传统的真实面貌:这一传统并非诞生于纯粹的思辨之中,而是在财政、工程、历法、文书与责任链条之间的长期磨合中逐渐形成的。他所代表的,是一个真正身处现实压力之中的人:具体事务持续压迫着他,时间持续催促着他,误差持续威胁着他,而他借助算法,把纷繁的现实世界稳稳地把握住。

他所著的《数书九章》,表面上是一部数学著作,实质上更接近一份帝国事务的算法手册。书中所设的题目大多带有明确的现实紧迫性:如何调配资源,如何测算数值,如何在相互牵制的条件之中,找到切实可行的方案。阅读这部著作,能够感受到一种颇具宋代特色的气质:内容复杂,态度务实,需求急迫,但表达克制。它并不把计算的过程隐藏在灵感之中,而是把整个运算过程摊在纸面之上——把原本似乎只能依靠天赋才能完成的工作,转化为经过训练的普通人也能够依照步骤完成的任务。

四、粮运与工程:两个现场

秦九韶的方法,在两类具体事务中体现得尤为清楚:粮食运输的分配,以及工程建设的估算。

宋代的粮食运输,关系着帝国的命脉:北方军需、京城供给、地方赋税、仓廪调拨,每一项都牵动着具体的民生与政局的稳定。风向的变化、水位的涨落、路程的远近、损耗的多寡,以及运载能力的差异,都会不断地影响实际的运输安排。要在这些不断变动的因素之中,把粮食按时、按量、按规矩送达指定地点,是一项极为现实而艰巨的任务。

“粮运分配"的难点,并不在于计算出一个总数,而在于必须同时满足多重约束条件:某地仓储的缺口有多大,某地军需的紧迫程度如何,某段路程的损耗有多严重;某段水道只能通行小型船只,某段水道需要转驳;某些物资必须优先送达,否则将造成严重后果;某些物资则可以适当延后,但延后过久,又会导致账目无法核对。这些条件相互交织,共同构成了一个牵一发而动全身的复杂系统。

在这种情况下,真正的危险,并非"不会计算”,而是"计算结果彼此不一致":不同的基层官员,依照各自的经验分别提出不同的分配方案,上级再从中裁定,而未被采纳的一方难免心存不满。这种不一致一旦扩散,粮食运输便可能陷入停滞,而政令一旦无法落实,便形同一纸空文。

帝国真正需要的,并非依赖某一次灵光乍现的天才判断,而是一套能够被交接、被复核、被追责的完整流程:把所有条件清楚列出,把运算步骤如实记录,使任何经过训练的人依照同样的步骤操作,都能得出相同的结果;再把最终结果代入每一条原始条件重新核验——如果全部成立,争议便能够被这套流程有效化解。

这正是秦九韶方法的关键所在。面对一张错综复杂的调拨清单,他所采用的手法,并非依靠某种巧妙的捷径,而是系统性的拆解:把各项约束条件逐一分离处理,再把局部得出的结论重新合拢,逐步逼近最终的答案,并且每一步都留有清晰的记录,可供随时回溯查验。

在他的方法中,粮食运输的分配问题,不再表现为经验之间的争执,而更接近一台机器的运行:输入既定的约束条件,按照既定步骤逐步推进,最终得出可行的方案,再把这一方案代回各项约束条件之中逐条验证。验证若能通过,方案便可以成立;验证若未能通过,便回到某一具体步骤重新调整。

这正体现出一种"帝国式"的可靠:它所依靠的,并非"说服对方接受结论",而是"由流程本身承担说服的责任"。殷商时期在裂纹旁刻下编号,是为了防止占卜的解释被随意篡改;宋代在粮运事务中建立起清晰的运算流程,则是为了防止分配方案在争执中被随意拆散。三千年间,承载数学的载体几经更替,应用的具体场景也大不相同,但那种追求秩序、力求先把争执纳入可追溯轨道、再谈论立场与得失的态度,始终没有改变。

工程估算是另一个能够充分体现这套方法的具体场景。河堤需要修筑,渠道需要开挖,城防需要构建,桥台需要架立。在宋代,水利与工程事务从来不是锦上添花之举,而关系到民众的基本生计——一场洪水足以吞噬一年的赋税收入,一段堤坝的溃决足以使整个地区的秩序瞬间瓦解。

工程估算的困难之处在于,它把抽象的计算问题,直接拖入了泥土、石料与人力这类具体而不规则的现实条件之中:需要计算的不只是抽象的数值本身,还包括土方的体积、边坡的角度、材料的厚度、运输的距离、劳动效率、以及工期的长短。这些数据往往并不理想,地形也很少规整,人力条件也常常处于波动之中,若仅仅依赖某个整齐划一的公式来求解,在实际工地上便很容易遭遇困境。

在这类问题上,秦九韶所展现的方法,同样是把复杂性当作需要正面处理的材料,而非回避问题的借口:材料越是复杂,所需的方法便越要精细。他把整个估算过程系统地摊开:先把整体形体分解为若干局部,化整为零;再逐项核算,层层推进;最后把计算结果代回现实的种种约束条件之中——检验其是否符合预算、工期、人力与运输能力等各方面的限制,从而判断方案是否真正可行。

在这个意义上,“可执行性"本身,构成了这套算法体系的一种独特美感:它并非展现于某个耀眼夺目的瞬间,而是体现在长期、稳定、可重复的操作过程之中。这里可以做一个鲜明的对照:希腊人把数学写成了一座能够自证其身的建筑,秦九韶则把数学写成了一台能够持续运转的机器。前者依靠推理链条的公开透明,来赢得人们的信服,后者依靠程序流程的可重复验证,来维系整个系统的运转。二者所追求的都是可靠性,只是可靠性的来源有所不同。

在秦九韶之后,这台"机器"的运转并未因此停止。杨辉把这套方法系统整理成可供教学的教材,使更多人能够掌握相应的操作方式;李冶通过天元术,使几何图形之间复杂的关系,更加顺畅地转化为代数方程;朱世杰通过四元术与消元方法,使涉及多个未知量、多重方程的复杂系统,变得更加可控。宋元之际数学的高峰,因此并不是几位天才恰好同时出现的巧合,而是整条算法传统,在长期的现实压力中被逐步锻造成为一套完整的体系:能够处理复杂的约束条件,能够应对大规模的计算需求,也能够被系统地训练、监督与核查。

尾声:火光还在,只是换了载体

回望这条漫长的历史脉络,殷商时期的先民在裂纹旁刻下数字时,未必会想到三千年后会出现"方程"“消元"“算法体系"这类概念,他们只是在混乱之中寻求秩序,在争执发生之前,力求先锁定一条可以追溯的证据链条。他们用火把内心的疑惧转化为裂纹,又用数字把裂纹固定为可查验的档案。那份最初的清醒,此后从骨头上转移到竹简之中,登上了处理具体事务的案几,落入算筹排列成的阵列,又凝结于算盘的珠子之间,最终在宋元时期这口"压力锅"中,被锻造成一种成熟的算法文明——它不依靠宏大的宣言来争取认同,也不依靠公开的辩论来树立权威,却能够在纷繁复杂的现实事务中始终保持可靠,使国家的日常运转不至于在误差的积累中走向崩溃。

若沿着这条脉络回望整个历程,会发现中国古代数学最动人之处,恰恰不在于它是否走上了与希腊相似的道路,而在于它从一开始便选择了属于自己的路径:把计算转化为制度,把正确性交由流程来保证,把复杂性压缩为可执行的程序,把天时与人事,都纳入了一套可以反复核验的秩序之中。这是一种并不张扬的成就——它不像拱券那样令人仰头惊叹,却像秤砣一样,让人能够低头信赖。秤砣并不需要被赞美,它只需要准确;而当一个文明能够把这种准确维持上千年,并在粮食运输、工程建设这类最为朴素、最不引人瞩目的现实场景中,把算法磨炼成一台真正可靠的机器时,它便已经在世界数学史上,拥有了属于自己的高峰。