∫π每天一道数学题
← 返回数书九章专题
数书九章 · 第 1 讲 · 2026-09-19 · 约 12 分钟

第1讲 大衍求一术——中国剩余定理

秦九韶把《孙子算经》「物不知数」的解法推广为一般方法「大衍求一术」,让任意同余方程组都能系统求解。这是中国数学对数论的最大贡献之一。

原典

今有数,以五累减之,余二;以七累减之,余三;以九累减之,余四。问数几何?

答曰:一百五十七。

术曰:以五、七、九相乘得三百十五为术。以五除三百十五得六十三,以七除三百十五得四十五,以九除三十五得三十五,皆为定率。乃以六十三求乘率于五,五乘一退位,六十三除之,余三,三逢五减之余二,即乘率为二。亦以四十五求乘率于七,七乘一退位,四十五除之,余三,三逢七减之余一,即乘率为五。又以三十五求乘率于九,九乘一退位,三十五除之,余八,八逢九减之余八,即乘率为八。遂以乘率乘定率,合得答数。以三百十五去之,余一百五十七。

——秦九韶《数书九章》大衍类第一题

这段话说的是什么

有一堆东西,不知道总数。如果每次都拿走5个,最后剩2个;每次都拿走7个,最后剩3个;每次都拿走9个,最后剩4个。问总数是多少?

这其实就是解同余方程组

{x2(mod5)x3(mod7)x4(mod9)\begin{cases} x \equiv 2 \pmod{5} \\ x \equiv 3 \pmod{7} \\ x \equiv 4 \pmod{9} \end{cases}

秦九韶的贡献在于:他把《孙子算经》「物不知数」的特殊解法,推广成了一套机械化的算法——不管题目怎么变,只要模数两两互素,按流程走就能算出来。这套算法叫「大衍求一术」。

示意图

大衍求一术示意图

以5余2、以7余3、以9余4,总数157。三个余数对应三个不同周期的剩余位置。

大衍求一术的步骤

秦九韶的方法分三步:

第一步:算「定率」——把三个模数相乘得到「术数」,再分别除以每个模数。

5×7×9=3155 \times 7 \times 9 = 315

定率1=3155=63,定率2=3157=45,定率3=3159=35\text{定率}_1 = \frac{315}{5} = 63, \quad \text{定率}_2 = \frac{315}{7} = 45, \quad \text{定率}_3 = \frac{315}{9} = 35

第二步:求「乘率」——找每个定率关于对应模数的逆元。

  • 63mod5=363 \bmod 5 = 3,要找 kk 使得 3k1(mod5)3k \equiv 1 \pmod{5},得 k=2k = 2
  • 45mod7=345 \bmod 7 = 3,要找 kk 使得 3k1(mod7)3k \equiv 1 \pmod{7},得 k=5k = 5
  • 35mod9=835 \bmod 9 = 8,要找 kk 使得 8k1(mod9)8k \equiv 1 \pmod{9},得 k=8k = 8

秦九韶把这个求逆元的过程叫「求一」——名字来源于「得一则反」的思想:找到那个让余数「归一」的乘数。

第三步:合数取模

x=2×63×2+3×45×5+4×35×8=252+675+1120=2047x = 2 \times 63 \times 2 + 3 \times 45 \times 5 + 4 \times 35 \times 8 = 252 + 675 + 1120 = 2047

2047mod315=1572047 \bmod 315 = 157

验证:

  • 157=31×5+2157 = 31 \times 5 + 2
  • 157=22×7+3157 = 22 \times 7 + 3
  • 157=17×9+4157 = 17 \times 9 + 4

现代数学视角

在现代数论中,这就是中国剩余定理(Chinese Remainder Theorem):若 m1,m2,,mkm_1, m_2, \dots, m_k 两两互素,则同余方程组

xai(modmi)(i=1,2,,k)x \equiv a_i \pmod{m_i} \quad (i = 1, 2, \dots, k)

在模 M=m1m2mkM = m_1 m_2 \cdots m_k 下有唯一解。

秦九韶的「求一术」本质上就是在模 mim_i 下求 M/miM/m_i 的乘法逆元。他用的是辗转相除法的变体,比西方高斯(Gauss)早了五百多年。

在高中数学体系里的位置

思想延伸:大衍求一术体现了「分解再重组」的数学思想——把一个复杂问题拆成互不干扰的子问题,分别解决后再合并。这在算法设计、信号处理中都有直接应用。

运算练兵场:本题涉及带余除法、模运算、线性不定方程,是对运算能力的综合训练。

综合题常客:中国剩余定理在高考中常以数学文化题或算法框图题的形式出现(如2017年全国卷算法题),在高中数学选修4-6《不等式选讲》和选修4-2《框图》中都有涉及。

思考与拓展

  1. 如果题目改为「以六累减之余四,以八累减之余二,以十累减之余六」,能否直接用大衍求一术?如果不能,需要怎么做?

  2. 《孙子算经》「物不知数」三三数之余二、五五数之余三、七七数之余二,用大衍求一术算出来是多少?

  3. 秦九韶的时代没有「同余」这个概念,他是怎么想到「求一」这个步骤的?查阅《数书九章》序言,他提到了哪些灵感来源?

一句话总结

秦九韶把「物不知数」的特例推广为「大衍求一术」,让任意同余方程组都能按程序求解——这是中国数学对世界数论最深刻的贡献。

— Y. · 2026-09-19