第1讲 大衍求一术——中国剩余定理
秦九韶把《孙子算经》「物不知数」的解法推广为一般方法「大衍求一术」,让任意同余方程组都能系统求解。这是中国数学对数论的最大贡献之一。
原典
今有数,以五累减之,余二;以七累减之,余三;以九累减之,余四。问数几何?
答曰:一百五十七。
术曰:以五、七、九相乘得三百十五为术。以五除三百十五得六十三,以七除三百十五得四十五,以九除三十五得三十五,皆为定率。乃以六十三求乘率于五,五乘一退位,六十三除之,余三,三逢五减之余二,即乘率为二。亦以四十五求乘率于七,七乘一退位,四十五除之,余三,三逢七减之余一,即乘率为五。又以三十五求乘率于九,九乘一退位,三十五除之,余八,八逢九减之余八,即乘率为八。遂以乘率乘定率,合得答数。以三百十五去之,余一百五十七。
——秦九韶《数书九章》大衍类第一题
这段话说的是什么
有一堆东西,不知道总数。如果每次都拿走5个,最后剩2个;每次都拿走7个,最后剩3个;每次都拿走9个,最后剩4个。问总数是多少?
这其实就是解同余方程组:
秦九韶的贡献在于:他把《孙子算经》「物不知数」的特殊解法,推广成了一套机械化的算法——不管题目怎么变,只要模数两两互素,按流程走就能算出来。这套算法叫「大衍求一术」。
示意图
以5余2、以7余3、以9余4,总数157。三个余数对应三个不同周期的剩余位置。
大衍求一术的步骤
秦九韶的方法分三步:
第一步:算「定率」——把三个模数相乘得到「术数」,再分别除以每个模数。
第二步:求「乘率」——找每个定率关于对应模数的逆元。
- ,要找 使得 ,得
- ,要找 使得 ,得
- ,要找 使得 ,得
秦九韶把这个求逆元的过程叫「求一」——名字来源于「得一则反」的思想:找到那个让余数「归一」的乘数。
第三步:合数取模
验证:
- ✓
- ✓
- ✓
现代数学视角
在现代数论中,这就是中国剩余定理(Chinese Remainder Theorem):若 两两互素,则同余方程组
在模 下有唯一解。
秦九韶的「求一术」本质上就是在模 下求 的乘法逆元。他用的是辗转相除法的变体,比西方高斯(Gauss)早了五百多年。
在高中数学体系里的位置
思想延伸:大衍求一术体现了「分解再重组」的数学思想——把一个复杂问题拆成互不干扰的子问题,分别解决后再合并。这在算法设计、信号处理中都有直接应用。
运算练兵场:本题涉及带余除法、模运算、线性不定方程,是对运算能力的综合训练。
综合题常客:中国剩余定理在高考中常以数学文化题或算法框图题的形式出现(如2017年全国卷算法题),在高中数学选修4-6《不等式选讲》和选修4-2《框图》中都有涉及。
思考与拓展
-
如果题目改为「以六累减之余四,以八累减之余二,以十累减之余六」,能否直接用大衍求一术?如果不能,需要怎么做?
-
《孙子算经》「物不知数」三三数之余二、五五数之余三、七七数之余二,用大衍求一术算出来是多少?
-
秦九韶的时代没有「同余」这个概念,他是怎么想到「求一」这个步骤的?查阅《数书九章》序言,他提到了哪些灵感来源?
一句话总结
秦九韶把「物不知数」的特例推广为「大衍求一术」,让任意同余方程组都能按程序求解——这是中国数学对世界数论最深刻的贡献。