大衍求一术

**大衍求一術**，又名**求一術**，是中國數學史中通常被用來泛指南宋數學家秦九韶發明的求解中國剩餘定理的歷史算法（不是中國剩餘定理的現代算法）。秦九韶原來的《數書九章》求解一次同餘式組的算法的總稱叫做**大衍總數術**，或**大衍術**、而其中一個計算**乘率**的子程序，才是**大衍求一術**。

大衍術是秦九韶最得意的創作，特放在《數書九章》之首。歐洲直到 18 世紀德國數學家高斯，才有相類的結果。秦九韶大衍術領先世界五百餘年。

## 歷史

一次同餘式組問題，最早見於《孫子算經》卷下第二十六問：

> 有物不知其數，三三數之剩二，五五數之剩三，七七數之剩二。問物幾何？答曰：二十三。術曰：三三數之，賸二，置一百四十；五五數之，賸三，置六十三；七七數之，賸二 ，置三十。並之，得二百三十三，以二百一十減之，即得。凡三三數之，賸一，則置七十 五；五五數之，賸一，則置二十一；七七數之，賸一，則置十五。一百六以上，以一百五 減之，即得。
> 
> 

　
: 宋周密《志雅堂雜鈔》述**鬼谷算**，又名**隔牆算**。

　
: 楊輝《繼古摘奇算法》記載**剪管術**解孫子物不知數的算法：

> 術曰：三數剩一下七十，五數剩一下二十一，七數剩一下五十。三位並之得二百三十三，滿一百五去之，減兩個一百五，餘二十三為答數
> 
> 

> 七數剩一，八數剩二，九數剩三，問本總數幾何？答曰：四百九十八
> 
> 

明嚴恭《通源算法》：

> 今有散錢不知其數，作七十七穿之，欠五十湊穿，若作七十八穿之，不多不少。問錢數若干？答曰：二千一百六文
> 
> 

明朝數學家程大位有《孫子歌》如下：

> 三人同行七十希，五樹梅花廿一支，七子團圓正半月，除百零五使得知
> 
> 

清代學者張敦仁在《求一算術》中提出大衍求一術源自《孫子算經》物不知數，後世學者，多從其說。但近年李儼、錢寶琮等學者提出大衍求一術很可能源自西漢《三統曆》中計算上元積年的「通其率」近似法，其後《古四分曆》和《乾象曆》沿用此法。

事實上，秦九韶在《數書九章序》中就寫道：「獨大衍法不載《九章》，未有能推之者，歷家推演法頗用之」，「歷家雖用，其用不知，小試經世，姑推所為，述大衍第一。」

## 大衍總數術

秦九韶大衍總數術原載《數書九章》第一卷上 大衍類 《蓍卦發微》：

> 置諸元數，兩兩連環求等，約奇弗約偶，遍約畢，乃變元數，皆曰定母，列右行，各立天元一為子，列左行，以定諸母，互乘左行之子，各得名曰衍數，次以各定母滿去衍數，各余名曰奇數，以奇數與定母，用大衍術求一。
> 
> 

程序如下：。

　
: 1。將問數（有關問題中的數字）[ $m_{1}$ ， $m_{2}$ …… $m_{n}$ ]，分為四大類

* 元數：整數
* 收數：帶小數的有理數。
* 通數：分數
* 複數：10 的倍數。

　
: 2. 如果問數 [ $m_{1}$ ， $m_{2}$ …… $m_{n}$ ] 是收數，則以 10 的倍數乘之化為元數列，按元數計算。

　
: 3：如果問數 [ $m_{1}$ ， $m_{2}$ …… $m_{n}$ ] 包含分數，則化為元數列，按元數計算。

　
: 4。當問數 [ $m_{1}$ ， $m_{2}$ …… $m_{n}$ ] 是整數

　
: 4.1: 將問數成對以其最大公約數約化，約奇數不約偶數；如二數都是偶數，約化其中之一。如二數中一個數是 10 的倍數，另一數的個位是 5，則約化偶數不約化奇數。最後得到一組

**定母**：[ $m'_{1}$ ， $m'_{2}$ …… $m'_{n}$ ]。

**定母**之中避免過多 1，得到一個「1」即可。各定母為相應問數的因子；定母兩兩互為質數。定母的乘積稱為**衍母**，是問數的最小公倍數。

　
: **衍母** v=∏ $m'_{i}$ ; i=1…n;

　
: 4.3：將各定母分別除衍母，得到一組**衍數**：[ $M_{1}$ ， $M_{2}$ …… $M_{n}$ ]

　
: 其中 **衍數** $M_{i}=$ v/ $m'_{i}$

　
: 4.4 用**定母** $m'_{i}$ 約化**衍數** $M_{i}$ (i=1……n)；餘數 $d_{i}$ 稱為**奇數**。

　
: 4.4 當**奇數** $d_{i}$ =1 時，**乘率** $x_{i}$ = **定母** $m'_{i}$ 。

　
: 4.5 當**奇數** $d_{i}$ ≠1 時，從**定母** $m'_{i}$ 和**奇數** $d_{i}$ ，用**大衍求一術**計算**乘率** $x_{i}$ ；（i=1……n)；

　
: 例一：《孫子算經》「物不知數」，

　
: * 問數：3，5，7；因兩兩互素，也即定母。
* 定母：3，5，7
* 衍母 =3\*5\*7=105
* 衍數 = 35，21，15
* 奇數：2，1，1
* 乘率：?,5,7

　
: 例二：問數 108，57，75，40

　
: 定數：27，19，25，8
* 衍母 =27\*19\*25\*8=102600
* 衍數 = 3800，5400，4104，12825
* 奇數：20， 4， 4， 1
* 乘率：？，？，？，8

## 大衍求一術

### 求乘率

秦九韶用大衍求一術解：

　
: 乘率 \* 奇數≡1（mod 定母）

> 大衍求一術雲︰置奇右上，定居右下，立天元一於左上。先以右上除右下，所得商數與左上一相生，入左下。然後乃以右行上下，以少除多，遞互除之，所得商數隨即遞互累乘，歸左行上下。須使右上末後奇一而止，乃驗左上所得，以為乘率。
> 
> 

例一：定母 83，奇數 65，求乘率 x

　
: x\*65≡1 mod（83）

　
: 答：乘率 = 23

　
: 置天元一於左上角，置奇數於右上角，置定數右下角，置 0 於左下角。

　
: 83/65 =1， 置左下，餘數 18 置右下。

　
: 65/18 商 = 3，加於左上，餘數 11，置右上

　
: 18/11，商 = 1，乘左上，加於左下，餘數 7，置右下。

　
: 余類推，直到右上 = 1 為止。

　
: 右上 = 1，左上 = 23 = 乘率。

 $23*65=1495=$ 1 (mod 83)

## 參考文獻

### 引用

### 來源

* 李儼 ：《大衍求一術的過去和未來》《李儼錢寶琮科學史全集》卷 6 121 頁《程大位的孫子歌》遼寧教育出版社. 1998
* 錢寶琮：《秦九韶數書九章研究》》《李儼錢寶琮科學史全集》卷 9
* 吳文俊 主編：《中國數學史大系》 第五卷 第三、四、五編
* 吳文俊 主編：《秦九韶與數書九章》 北京師範大學出版社 1987
* ［比利時］李倍始（Ulrich Libbrecht）：_Chinese Mathematics in the Thirteen Century (The Shu-Shu-Chiu-Chang of Chin Chiu shao)_ Dover Publication ISBN 0486446190
* 秦九韶 原著，王守義 遺著，李儼 審校：《數書九章新釋》 安徽科學技術出版社 1992 ISBN 7-5337-0788-5/O
* 李繼閔：《大衍求一術溯源》，吳文俊 主編 ：《秦九韶與數書九章》 138-158 頁 北京師範大學出版社 1987
* 袁向東、李文林：《數書九章中的大衍類問題和大衍總數術》 ，吳文俊 主編 ：《秦九韶與數書九章》 159-179 北京師範大學出版社 1987

## 參見

* 中國剩餘定理
* 秦九韶