大衍求一术

大衍求一术，又名求一术，是中国数学史中通常被用来泛指南宋数学家秦九韶发明的求解中国剩余定理的历史算法（不是中国剩余定理的现代算法）。秦九韶原来的《数书九章》求解一次同余式组的算法的总称叫做大衍总数术，或大衍术、而其中一个计算乘率的子程序，才是大衍求一术。

大衍术是秦九韶最得意的创作，特放在《数书九章》之首。欧洲直到18世纪德国数学家高斯，才有相类的结果。秦九韶大衍术领先世界五百余年。

历史
一次同余式组问题，最早见于《孙子算经》卷下第二十六问：

宋周密《志雅堂杂钞》述鬼谷算，又名隔墙算。
杨辉《继古摘奇算法》记载剪管术解孙子物不知数的算法：

明严恭《通源算法》：

明朝数学家程大位有《孙子歌》如下：

清代学者张敦仁在《求一算术》中提出大衍求一术源自《孙子算经》物不知数，后世学者，多从其说。但近年李俨、钱宝琮等学者提出大衍求一术很可能源自西汉《三统历》中计算上元积年的“通其率”近似法，其后《古四分历》和《乾象历》沿用此法。

事实上，秦九韶在《数书九章序》中就写道：“独大衍法不载《九章》，未有能推之者，历家推演法颇用之”，“历家虽用，其用不知，小试经世，姑推所为，述大衍第一。”

大衍总数术

秦九韶大衍总数术原载《数书九章》第一卷上 大衍类 《蓍卦发微》：

程序如下：。

1。将问数（有关问题中的数字）[，……]，分为四大类
元数：整数
收数：带小数的有理数。
通数：分数
复数：10的倍数。
2.如果问数[，……]是收数，则以10的倍数乘之化为元数列，按元数计算。
3：如果问数[，……]包含分数，则化为元数列，按元数计算。

4。当问数[，……]是整数
4.1:将问数成对以其最大公约数约化，约奇数不约偶数；如二数都是偶数，约化其中之一。如二数中一个数是10的倍数，另一数的个位是5，则约化偶数不约化奇数。最后得到一组

定母：[，……]。

定母之中避免过多1，得到一个“1”即可。各定母为相应问数的因子；定母两两互为质数。定母的乘积称为衍母，是问数的最小公倍数。
衍母 v=∏ ;  i=1…n;
4.3：将各定母分别除衍母，得到一组衍数：[，……]
其中 衍数  v/
4.4 用定母 约化衍数 (i=1……n)；余数 称为奇数。

4.4 当奇数=1时，乘率=定母。
4.5 当奇数≠1时，从定母和奇数，用大衍求一术计算乘率；（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=乘率。
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

参见 

 中国剩余定理
 秦九韶

宋朝数学