第三节 大衍求一术

大衍求一术是中国古代数学家用于解决一次同余组问题的方法。这类问题与历法中关于“上元积年”的推算有着密切的关系。在中国古代,天文学家们假定远古时有一年的十一月初一甲子日夜半又恰好是合朔和那一年的冬至,并把这一时刻定为历法计算的起点,称为“历元”。从该年到编历年所经过的总年数,就叫做“上元积年”。已知编历年实测冬至时刻和十一月初一合朔时刻推算上元积年,就是求解一次同余组问题。西汉历法中已有上元积年的数据,但没有算法的记载。由于当时问题比较简单,所以其算法也不会太难。南北朝时期《孙子算经》中的“物不知数问题”(亦称“孙子问题”),是最早见于中国数学文献的一次同余组问题,但其解法很不完备。随着天文历法的发展,天文学家对历元又提出了“日月合璧,五星联珠”等要求,于是推算上元积年的条件更为复杂,求解有关同余组也就需要更高的技巧。显然,从两汉到宋朝的千余年中,一定会有很多天文学家和数学家曾研究并很熟悉一次同余组的解法,但可惜的是在有关文献中除一些数据外却没有更多的记载。南宋数学家秦九韶系统地总结和发展了前人的贡献,在《数书九章》中创立“大衍求一术”,提出关于一次同余组问题的相当完整的理论和算法, 并且推广其应用范围,取得了举世公认的杰出成就。他所著的《数书九章》, 曾称《数学大略》、《数学九章》,全书 18 卷,分 9 类,每类 9 题共 81 个应用问题,其内容涉及天文历法、土地面积、勾股测量、建筑工程、田赋户税、商业贸易、货币金融、军事活动等丰富内容,是一部可与《九章算术》相媲美的数学名著。

《数书九章》所载大衍求一术的大意是,设要求解一次同余组: x≡ri(modmi)(其中 i=1,2,3,⋯,n)

秦九韶把求最小正整数 x 的问题归结为求出一组数 ki,使之满足条件:

k M ≡1(modm ),(i=1,2,3⋯,n)

i mi i

其中 M=m1·m2·⋯·mn,ki 称为“乘率”。于是,一次同余组的最小正整数解

x=(r k

M +r k

M +⋯+r k

M )—pM(p 为非负整数)

1 1 m1

2 2 m2

n n mn

这就是现在数论中著名的“孙子定理”。秦九韶详细论述了用辗转相除推算ki 的方法,由于运算的最后一步要出现余数 1,因而称为“求一术”。他又进一步将其与《易经·系辞》中的“大衍之数”附会起来,而称之为“大衍求一术”(现在一般通指一次同余组解法)。此外,他还分别讨论了模数 m1、m2、⋯、mn 两两互素和不互素的情形,并给出了相应的变换方法。在欧洲, 直到 18、19 世纪,著名数学家欧拉(L.Euler,1743)和高斯(C.F.Gauss, 1801)等才对一般同余组解法进行了深入研究,获得与秦九韶相同的结果, 并且对模数两两互素的情形给出了严格的证明。这已经是秦九韶以后 500 年的事情了。在数学史上,上述定理过去称为“中国剩余定理”,现多改称“孙子剩余定理”或“孙子定理”。