古人数学智慧——《孙子算经》物不知数(中国剩余定理)

中国古代著名算题。原载《孙子算经》卷下第二十六题:“今有物不知其数,三三数之剩二;五五数之剩三;七七数之剩二。问物几何?”当时虽已有了答案23,但它的系统解法是秦九韶在《数书九章·大衍求一术》中给出的。大衍求一术(也称作“中国剩余定理”)是中国古算中最有独创性的成就之一,属现代数论中的一次同余式组问题。

用通俗的话来说,题目的意思就是:

有一些物品,不知道有多少个,只知道将它们三个三个地数,会剩下2个;五个五个地数,会剩下3个;七个七个地数,也会剩下2个。这些物品的数量至少是多少个?

(注:诗题及题目原文都无“至少”二字,但“孙子问题”都是些求“最少”或者求“至少”的问题,否则就会有无数多个答案。所以,解释题目意思时,在语句中加上了“至少”二字。)

《孙子算经》解这道题目的“术文”和答案是:

“三三数之剩二,置一百四十;五五数之剩三,置六十三;七七数之剩二,置三十。并之,得二百三十三,以二百十减之,即得。”“答曰:二十三。”

明代著名的大数学家程大位,在他所著的《算法统宗》中,对于这种解一般“孙子问题”的方法,还编出了四句歌诀,名曰《孙子歌》:

三人同行七十稀,

五树梅花廿一枝;

七子团圆正半月,

除百零五便得知。

歌中的“廿”,读音与“念”音相同。“廿”即二十的意思。

歌诀中的每一句话,都指出了一步解题方法:

“三(3)人同行七十(70)稀”——是说除以3所得的余数,要用“70”去乘它;

“五(5)树梅花廿一(21)枝”——是说除以5所得的余数,要用“21”去乘它;

“七(7)子团圆正半月(15)”——“半月”是一个月30天的一半,即15日,这是说,除以 7所得的余数,要用“ 15”去乘它;

“除百零五(105)便得知”——这是说要把上面所乘得的三个数相加,加得的和如果大于105,便应减去105,或者减去105的倍数。这也就是《孙子算经》上的“一百六(106)以上,以一百五(105)减之”。这样得出的差,便是所要求的这个最小的未知数了。

用现代的方法可以将这个数X分成三个数a、b、c的和。a满足被3整除余2,并能同时被5、7整除;b满足被5除余3,并能同时被3、7整除;c满足被7除余2,并能同时被3、5整除。

(5*7)÷3=11……2,a可以是5*7=35.

(3*7)÷5=4……1,由于b满足余数是3,所以(3*7)*3=63=b。

(3*5)÷7=2……1,由于c满足除以7余2,所以(3*5)*2=30=c

于是,由X=a b c=35 63 30=128,得到的128就是一个所要求得的数。但这个数并不是最小的。最小的需要减去n个最小公倍数[3,5,7]==105.也就是128-105=23

练习:有一类数,除以7余2,除以8余4,除以9余3,问这类数中最小的正整数是多少?

(0)

相关推荐