6取余11c语言,中国剩余定理“大衍求一术”手算方法及四个习题

中国剩余定理“大衍求一术”手算方法及四个习题

2016-01-24

佛山下雪

今天广东佛山下雪。有一些雪花还真有点像鹅毛。这是我退休后移居广东20年来,第一次看到的景像。

中国剩余定理解题过程

“中国剩余定理”是公元5-6世纪、我国南北朝时期的一部著名算术著作《孙子算经》中的一个“物不知数”的解法问题:

今有物,不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?

答曰:二十三。

术曰:「三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得。」

用现代数学表示,即:

X≡R1  (mod  m1 )

X≡2  (mod  3

)

X≡R2  (mod  m2)

→  X≡3

(mod  5 )

X≡R3  (mod  m3)

X≡2  (mod  7 )

求物数X

计算步骤及名词注释如下:

1  余数R : 例中 R1=2、R2=3、R3=2

2  模,亦即除数m :例中 m1=3、m2=5、m3=7

3  模的最小公倍数G :G =m1×m2×m3,例中 G

=3×5×7=105

4  衍数(局部公倍数)y

:Y1=m2m3、Y2=m1m3,Y3=m1m2,例中Y1=5×7=35、Y2=3×7=21、Y3=3×5=15

5  计算乘率C

:这是解算中国剩余定理的关键。计算“乘率”的方法,我认为在《孙子算经》年代就已经知道了,只是书上没有详细说明而己。否则怎么会有“三三数之剩二,置一百四十

… 凡三三数之剩一,则置七十 …

”等语呢?因为140=70×2,而2就是“乘率”。到了南宋,秦九韶才在《数书九章》一书中写出计算方法,称之为“大衍求一术”。

“求一”就是使 (衍数Y×乘率C) -模m×商N=余数1。以同余式表示为 :

衍数Y×乘率C≡1  (mod  m)。

例中 35C1≡1  (mod  3 ) 、

21C2≡1  (mod  5 ) 、15C3≡1

(mod  7 )。

已知Y、m、1,求C。经计算得C1=2、C2=1 、C3=1。求C的细节,见下面四个习题。

上述各项计算结果见下表:

同余式 i 衍数Y 乘率C 余数R 模m  检验  (Y C -

1)/ m = 整数N

1  35  2  2  3  (35×C-1)/3

=N  (35×2-1)/3 = 21

2  21  1  3  5  (21×C-1)/5

=N  (21×1-1)/5 = 4

3  15  1  2  7  (15×C-1)/7

=N  (15×1-1)/7 = 2

为什么先要算余数为 1

时的乘率C呢?

原来,解题的最终目的是要解算余数为R的同余式Y×X≡R  (mod

m),求出X。但必须先算得Y×C≡1  (mod

m) 后,再两边各乘R,得:

Y×C×R≡1×R

(mod  m)  → X≡R

(mod  m) → 才得到X=Y×C×R

这是一个方程的情况。对于多个方程则有:

6 最终:X≡Y1C 1 R1+Y2C2 R2+Y3C3 R3  (mod G) 。见下表

同余式i 衍数Y

乘率C 余数R  Y×C×

R

1  35  2

2  35*2*2 = 70*2 = 140

2  21  1

3  21*1*3 = 21*3 =

63

3  15  1

2  15*1*2 = 15*2 =

30

Σ  233

X≡233 (mod

105)。X超过模m,不行。于是233 减去105的2倍后,剩下23,即

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

最终,X≡23

(mod 105)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值