数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 1938|回复: 2

中国古算书简介|04 《孙子算经》与“大衍求一术”

[复制链接]
发表于 2020-9-21 21:07 | 显示全部楼层 |阅读模式
中国古算书简介|04 《孙子算经》与“大衍求一术”

作者 | 李梦樵
来源 | 《中学数学教学》1983年04期


四 《孙子算经》与“大衍求一术”

《孙子算经》,相传为春秋时代作兵书十三篇的孙武子所作。但因为原书在明代已经亡佚,所以该书作者“孙子”究竟是谁,已经无从考证。现在所能见到的《孙子算经》,是清代乾隆年间,由安徽数学家戴震从《永乐大典》中辑出的。

书中卷下载有“长安洛阳相去九百里”及“今有佛书凡二十九章”。由于长安是西汉建国时所定京都的名称,而洛阳是东汉的首都,佛书开始传入中国在东汉明帝永平八年(公元65年)。由此,戴震认为“孙子”其人,不能早于汉明帝时代。又据《夏侯阳算经》序言称:五曹、孙子述作滋多,甄鸾、刘徽为之作注。刘徽是三世纪人,他为《九章算术》所作的注,发表于公元263年。综上所述,《孙子算经》成书年代,大致可以推断在公元66年至270年之间。

《孙子算经》共分上、中、下三卷。上卷论度量衡各种规定及算筹用法,是算术的基本知识。这是我国记载算筹用法的、所能见到的最早的算书。

算筹用法有“凡算之法,先识其位,一纵十横百立千僵,千十相望,万百相当。”就是说个位、百位,万位,算筹纵排。十位、千位,十万位,算筹横排。例如23421五位数用算筹排列当为 ▏▏≡ ▏▏▏▏= ▏

这样的排列遇到某一位没有数字就空一位,以后加一点(一个小石子),以后加一个圈。“O”号的发现和使用,便从此而得。

中卷是讲应用题,包括面积、体积以及等差、等比数列,大致不出《九章算术》范围,但有开平方的步骤,为后世所遵循。又有“雉兔同笼”(即鸡兔同笼)问题常见于初级算书。

下卷有测算胎儿的性别及患重病人的吉凶,阮元认为鄙陋荒诞,当为后人妄增,未必是孙子原作。但下卷有一道题,是“大衍求一术”的起源,为中算史放一异彩。

下卷第26题:“今有物不知其数。三三数之剩2,五五数之剩3,七七数之剩2,问物几何?答曰:二十三。

术曰:三三数之剩2,置一百四十,五五数之剩3,置六十三,七七数之剩2,置三十。并之得二百三十三,以二百一十减之即得。

这一段话用现在数学的语言来说,就是:某数用3除余2,用5除余3,用7除余2,求其数。

解:3除的余数用70乘之,5除的余数用21乘之,7除的余数用15乘之,把三个乘积相加,减去105的倍数。即

2×70=140,3×21=63,2×15=30

140+63+30=233

233-2×105=233-210=23

宋、周密在所著《志雅堂杂抄》,卷下“阴阳算术”条有“鬼谷算”,叙述《孙子算经》“物不知其数”一题及其解法,编成四句诗:

三岁孩儿七十稀,五留廿一事尤奇,七度上元重相会,寒食清明便可知。

第一句是说,3除的余数用70乘之,第二句是说5除的余数用21乘之,第三句的上元是农历正月十五日,是说7除的余数用15乘之。第四句寒食节是清明前一天,由冬至到清明是106日,所以冬至到寒食节是105天。上面三个乘积相加再减去105的倍数。

上面四句诗词义隐晦。明程大位在所著《算法统宗》里换为下列四句:

三人同行七十稀,五树梅花廿一枝,七子团圆正半月,除百另五便得知。

程大位这四句诗广泛流传几乎家喻户晓。

上面的除数是3、5、7三个数,105=3×5×7。5除的余数用21乘,21=3×7;7除的余数用15乘,15=3×5。为什么3除的余数不用35乘而用70乘呢?难就难在这一点,妙也就妙在这一点。原来21被5除,余数是1。15被7除,余数也是1,独35被3除的余数不是1,只有2×35=70而70被3除的余数是1。从下面可以知道乘数2叫做乘率。从70、21、15三个数来看,有:

70=3的倍数+1=5的倍数=7的倍数

21=3的倍数=5的倍数+1=7的倍数

15=3的倍数=5的倍数=7的倍数+1

2×70=3的倍数+2=5的倍数=7的倍数

3×21=3的倍数=5的倍数+3=7的倍数

2×15=3的倍数=5的倍数=7的倍数+2

相加得:233=3的倍数+2=5的倍数+3=7的倍数+2

233-2×105=233-210=23。

宋·秦九韶作《数书九章》,其中一、二两卷是大衍类就孙子“物不知数”问题发展为“大衍求一术”。“大衍”是秦氏给的名称;“求一”是这类问题解题的关键。国外称为“中国剩余定理”或“孙子定理”。这是中国数学最有独创性成就之一。继秦氏而后学者多有研究,改进其方法,扩大其应用。如宋·周密之“鬼谷算”,杨辉之“剪管术”;明·严恭的“管表”,周述学的“总分”,清·张敦仁的《求一术》三卷(1803年),骆腾凤的《艺游录》二卷(1843年),时日淳的《求一术指》一卷,黄宗宪的《求一术通解》二卷(1874年),以及现代著名数学家李俨、钱宝琮、华罗庚、吴文俊等,多所阐发。其中华罗庚教授所著《从孙子的“神奇妙算谈起”》一书深入浅出,引人入胜。国外如高斯、伟烈亚力、关孝和、三上义夫等亦各有论述。



(一)各除数彼此之间没有公约数(互质数)叫做“定母”,各定母连乘为“衍母”,在衍母中拿去一个定母其余各定母相乘为“衔数”。如是,有多少个定母就有多少个衍数。用定母去除相当的衍数,如果余数不是1,就要觅取一数a乘衍数,务使被定母除后余数为1,这个数a叫做“乘率”,有多少个衍数,就要有多少个乘率。乘率乘衍数叫做“用数”,用数乘剩数(题给的余数)叫做“各总”,各总合并,叫做“总数”,总数减去衍母倍数(要小于衍母)就得所求数 N.

用孙子问题作为例1,对上面术语作一说明,



(二)各除数不是互质数叫做泛母。将各泛母的质因子析出,有相同的质因子则保留其指数最大的加上△记号(例如4、6两泛母,析因后保留4、3。又如9、8、6三泛母,经析因后保留9、8、1,由于1作除数不起作用,第三项为废位),由此而得定母仍依(一)求N。

求乘率的方法是“大衍求一术”的关键。要善于观察,化繁为简,如果不易观察,可用“辗转相除法”从而求出乘率而使余数为1。

例、65a+83得余数为1,求a、

解:83-65=18,65-3×18=11 即 65-3×(83-65)=11

即 4×65-3×83=11

5×(4×65-3×83)-3×(83-65)=23×65-18×83=1 (注:5×11-3×18=1)。

由是得乘率为23。下面再用例题说明。



现说明上面三个乘率的求法。

144=35×4+4而4×9-35=1,故乘率为9。(注:为简便起见,只就第一次余数考虑。事实上有144×9=35×4×9+4×9=35×36+4×9=35×37+4×9-35=35×37+1。)

315=16×19+11而 11×3-16×2=1  ∴ 乘率为3,

560=9×60+20而20×5-9×11=1   ∴ 乘率为5。

本题三个泛母皆有因子7,为了保证各定母间没有公约数,只能在某一项保留7。前面把7留在第一项,下面把7留在第三项,可以看出这不影响所求数N:



这里的三个乘率的探求法,读者可以作为练习。

上面两例说明了“大衍求一术”的计算方法。“大衍求一术”曾应用于天文历法测算上。自唐·麟德历以后至元·授时历以前各代历法家,用求一术以调正朔闰。郭守敬专重测验,废古法不用,全赖于秦九韶备载于所著《数书九章》。

华罗庚教授指出:中国剩余定理不仅在古代数学史上有地位,而且它的解法原则,在近代数学史上还占有重要的地位;在电子计算机的设计中,也有重要的应用。

关于“大衔求一术”的问题,还可用同余式的记法。例1可记作;N=2(mod 3), N=3(mod 5), N=2(mod 7),求 N也可以用不定方程记之。求解;x=3a+2=5b+3=7c+2。

但用同余式解法与不定方程解法皆未能涉及“求一”的原则。

“求一术”是我国独创的数学理论,千余年来,中外学者,研究未衰,应用广泛,且方兴未艾。希望数学工作者多加研究,旁搜远绍,发扬国光,为四化建设,添砖添瓦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2020-9-21 22:57 | 显示全部楼层
求一术和求乘法的逆元本质相同,不知道哪个更简便?都用到了辗转相除法。
感谢陆元鸿教授给我的矩阵算法,使我不必推导公式就可以编程快速运算,得到最简解!
谢谢!
回复 支持 反对

使用道具 举报

发表于 2020-9-27 18:53 | 显示全部楼层
乘法的逆元有无穷多,最小的一个是唯一的(必须大于0),换成古人的说法:乘率是无穷的,大于0的乘率有唯一一个最小值。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-4-19 03:32 , Processed in 0.082032 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表