中国剩余定理即孙子定理的五种解法

—— 学习初等数论心得笔记

2013-10-04

博文2015-12修改

“中国剩余定理”是公元5-6世纪、我国南北朝时期的一部著名算术著作《孙子算经》中的一个“物不知数”的解法问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?答曰:二十三。

《孙子算经》中虽然也有计算方法的叙述,如术曰:「三三数之剩二,置一百四十,五五数之剩三,置六十三,七七数之剩二,置三十,并之,得二百三十三,以二百一十减之,即得。凡三三数之剩一,则置七十,五五数之剩一,则置二十一,七七数之剩一,则置十五,即得。」但也仅仅知道140+63+30=233、233-210=23,得物数23。至于接着说的剩一、置70、置21、置15,应该是说140=70*2、63=21*3、30=15*2的来源,而2、3、2又正是剩余数、210又正是除数3、5、7的最小公倍数的2倍。综合之,解的算式为70*2+21*3+15*2-2*3*5*7=23。虽然如此,但仍不知为什么要这么算,还有,

70、21、15是怎样来的?等等,如读天书。如果换一个题目你能算吗?连照搬都没法搬。

这个问题,过了八、九百年,到了宋代,才有秦九韶在《算书九章》中给以解答。但现代人读古代数书,正如读古代医书一样,绝大多数是丈二和尚模不着头了。

“中国剩余定理”的现代数学提法是,解一元一次同余式方程组:

X≡2 (mod

3)

X≡3 (mod

5)

X≡2 (mod

7)

初等数论中有解法,得X最小值为23,通解为X=23 +

105K。但因为原理很难理解,所以也只能按公式规定的步骤与方法,依样画葫芦的计算罢了。时间一长也就忘光了。由此可见,“中国剩余定理”的理论及计算方法,还达不到普知的地步,不像一元二次方程的公式,初中生都知道公式怎样来的,怎样应用的。

若要问我:你对“中国剩余定理”的态度是怎样的呢?回答只有两个字:“敬畏”。

其实“中国剩余定理”,就是解一组带余除法的不定方程:

X÷3=A…2

X÷5=B…3

X÷7=C…2,

若避开难点,换个角度看,那么解这组方程,不一定非用“同余式方程组”的解法。就我所知,有五个方法:

一、枚举法

二、解不定方程法

三、逐级满足法

四、化为相同除数的同余式法、

五、才用到典经的、不同除数的同余式组解法

现将陈景润所著《初等数论Ⅰ》中的一个习题为例,用五种方法解算,可以对比。

试解下列同余方程

X≡2 (mod 7 )

X≡5 (mod 9 )

X≡1 (mod 5

)

求X

一 枚举法

X≡2 (mod 7

) X÷7=A…2 X=7A+2

X≡5 (mod 9 ) 相当于 X÷9=B…5 → X=9B+5

X≡1 (mod 5

) X÷5=C…1 X=5C+1

枚举法就是按A=0、1、2、3、4… B=0、1、2、3、4… C=0、1、2、3、4…

代入各式,计算各式的X,当三个X相同时,就是一个解。

A、B、C 0

1 2 3 4 …

9 10 11 12

… 16 17

18…

XA 2

9 16 23 30… 65 72 79 86…

XB5

14 23  32

41

… 86 …

XC1 6 11

16 21 … 46 51 56 61

… 81 86 …

即,当A=12、B=9、C=17时,X 都等于86。所以最小

X=86。由于7、9、5的最小公倍数是315,所以,通解 X=86+315K (K=0、1、2、3、…)

枚举法就是凑,很‘笨’,但也最直观。适合小学生学习。也可用电子表格计算,那太快捷了。

二  解不定方程法

X=7A+2

X=9B+5 →9B+5=7A+2 →9B=7A+2-5=7A-3 →B=(7A-3)/9

X=5C+1 →5C+1=7A+2 →5C=7A+2-1=7A+1 →C=(7A+1)/5

由B=(7A-3)/9,算得:当A=3时,B=2,但A=3时,C=(7A+)/5=4.4。由于A、B、C只能是整数。所以

3、2、4.4这一组,不符合要求,要重算A。又由于B=(7A-3)/9的分母是9,所以下一个A,只能在3的基础上,增加一个9的倍数,所以A只能取12、21、30、39…有了A,再算B、C,当A、B、C全是整数时,才合格。结果如下:

A B C

3 2 4.4

12 9 17

21 16

29.6

可见,只能取A=12 、B=9 、C=17 , 代入原式:

X=7A+2=7*12+2=86

X=9B+5=9*9+5=86

X=5C+1=5*17+1=86

得 X=86、通解为X=86+315K得X=86、通解为X=86+315K。实际上,这仍然是枚举法,只是枚举个数减少一些而已。

三 逐级满足法

这个方法的基本思路是:先解算出合符第一个方程的X1。再解算出合符第一、第二个方程的X2,令X2=X1+P1。关键是P1要保持第一个方程中的倍数要求,又要合符第二个方程中的剩余要求。再解算出合符第一、第二、第三个方程的X3,令X3=X2+P2,关键是P2要保持第一第二两个方程中的倍数要求,又要合符第三个方程中的剩余要求。这样逐级解算,满足全部条件。

P要同时考虑两个方程的倍数关系如7A、9B,又要考虑两个余数关系,如余2、余5,方程数一多,处理时要拐几个弯,方法不易理解。

最近,我在作《数论—余数习题集》时,对“逐级满足法”作了改进。把第一个方程的通解,直接作为第二个方程的初值,不作任何转弯,就同时解决了两个方程之间的相关关系及余数关系,变得容易理解,容易操作、便于列式。这可以说是我的又一个心得罢。

仍按原例:

X除以7余2、除以9余5、除以5余1,求最小X。

答:最小X=86

通解

X =86 +315 N (

N=1、2、3

)

已知:

X≡2 (mod 7

) X÷7=A…2 X=7A+2

X≡5 (mod 9

) 相当于X÷9=B…5

→X=9B+5

X≡1 (mod 5

) X÷5=C…1 X=5C+1

A、B、C都是整数,可用K统一表示,且不论其具体数值。

解算步骤:

1、 先解第一个方程X÷7余2的通解X1。一般都很容易,即:

通解X1=余数+除数的倍数,例中X1=2+7A

。其中余数就是最小解X0=2,加上7的最小公倍数的A倍,就是通解X1=2+7A

X1是一个数列,其中总有一个数能满足所有方程,关键在于A是多少,又怎样定?A怎样定呢?现在不能定。因为要考虑到它能满足第二个方程,所以到那时才能定下来。

2、第二个方程。X÷9余5,此时的X首先应满足本方程要求:

(X-5)÷9

= K (K是整数)。但同时又要满足第一个方程,既然X1可以满足所有方程,所以就干脆用第一方程的通解X1代替第二方程的未知数X

,即用(X1)取代X。即应满足

(X1-5)÷9

= K,才顾及了两式。

注意,(X1-5)÷9

=K这种形式的方程,是有规律的,即:

(第一方程的通解X1(=2+7A

)

第二方程的余数5

)÷第二方程的除数9=整数K,

且以下各方程也都是这样的规律,亦即:

(

上一个方程的通解

本方程的余数

)÷本方程的除数

整数K

现在有了

(2+7A-5)÷9

=K ,就整理为(7A-3)÷9

= K。这时两个余数就自动合并了。

解此

(7A-3)÷9

= K方程,便得A=3

K=2。

于是

X1=2+7A=2+7×3=23。此时,就把X1=23作为第二个方程的最小解,转为X2,即X2=23。再加上7与9的最小公倍数7×9=63的倍数,得通解X2=23+63M。这个X2,既满足第一个方程又满足第二个方程。

X2也是一个数列,其中总有一个数,能满足所有方程,所以就是下一个方程的未知数初值了。关键在于M是多少。M怎样定呢?现在不能定。要考虑到它能满足第三个方程。到那时才能定下来。

至此,得到一个同余式X2≡23 (mod 63 ),实际上它是

X≡2 (mod 7

)

X≡5 (mod 9

) 二个同余式的共同解。

至于用什么方法来解(7A-3)÷9

= K 这个二元一次不定方程呢?(7A-3)÷9

= K也就是7A-9K

= 3,在陈景润所著《初等数论Ⅰ》中,有一个手算方法,先用“辗转相除法”得到各次余数,直到余数为“

1 ”,再反求出满足余数“

1 ”时的X、K的新系数,再通过“同余式”的转换,转换成己知余数(如本例的3),才得到最终的X的系数A。整个过程步骤多。反求X、K的新系数时、转换成己知余数时,都颇费工夫,我见了生畏。还不如老老实实的试算、凑数。

(7A-3)÷9

= K 求A与K的整数解,

列表凑罢:

A 7A (7A-3) K=

(7A-3)÷9

0 0

-3

0.33

1 7 4 0.44

3 21 18 2

好了,K是整数了

4

不必算了。

得A=3、K=2

。其实K仅起检验作用,是整数就行了,没有其他用处。

解二元一次不定方程最好的方法,当然是编个电脑程序。我已经编就了,请用吧

3、第三个方程。X÷5余1,此时X首先应满足本方程要求:

(X-1)÷5

= K,又要满足第一、第二个方程。既然X2可以满足所有方程,所以就干脆用第二方程的通解X2代替第三方程的未知数X

,即用(X2)取代X。即应满足:

(X2-1)÷5

= (23+63M

-1)÷5=K,→

(63M+22)÷5

= K。才顾及了三个方程。

解此二元不定方程

M=1 、

K=17。把M代入X2,

于是

X2=23+63M=23+63×1=86,就把X2=86作为第三个方程的最小解,转为X3

即X3=86。再加上63与5的最小公倍数63×5=315的倍数,得通解

X3=86+315P。(P=1、2、3 … )

验算86÷7

=12 …

2

86÷9 =

9 …

5

86÷5=17

1

* * * * *

“逐级满足法”解法有规律了,容易操作了。但也有两点麻烦:

1、组成形如 (AX±B)÷C=K的不定方程,要一个个顺序进行,虽有规律,但还是比较麻烦。

2、解算(AX±B)÷C=K方程,求待定量X、K,无论用手算,或是电子表格算,要解(N-1)次。也很烦人,特别是大数相除更麻烦。

为了加快计算,我编了一个VB程序,不用烦心,输入完数据,↙,就出结果了。

上述算题:

输入方程个数N =

3

输入各方程的除数与余数7 2 9 5 5 1

结果为:

通解 X

=86+ 315 N (

N=1、2、3

)

还有一例:我曾靠电子表格算了一天,才得结果的,现在包括输入在内,仅15秒就搞定。

输入方程个数N =

6

输入各方程的除数与余数3 2 5 3 7 2 11 9 13 7 4 3

结果为:

通解 X

=20183+ 60060N (

N=1、2、3

)

中国剩余定理即孙子定理

“逐级满足法”VB程序

Private Sub

Form_Click()

Form1.Width =

11520视窗宽

Form1.Height =

15360

视窗高

Dim

W(20) W 放除数(模)

如7、9、5,又用单变量C表示

Dim

R(20) R放余数如2、

5、

1

Dim

G(20) G 放各级最小公倍数、又用单变量A表示

Dim

F(20) F放上下余数之差,F(I) =

Y(I-1)-R(I)、又用单变量B表示

Dim

Y(20) Y放各级最小解,如2、23、86

N = InputBox

("输入方程个数 N

=")

For I = 1 To

N

W(I) = InputBox ("输入模W(I)=")

R(I) = InputBox

("输入余R(I)=")

Next

I

S=1

For I = 1 To

N

S =

S*

W(I)

计算各级最小公倍数

G(I)=S

Next I

F(1) =

R(1)

安置第一个方程的最小解

Y(1) =

R(1)

For I = 2  To

N

计算各级A、B、C

A=G(I-1)

组成

(AX+B)÷C=

K不定方程

F(I) =

Y(I-1)-R(I)

B=F(I)

C= W(I)

Print Spc(4); "

ABC= "; A;B;C

For X = 1 To

1000000

M = (A * X +

B)

解(AX+B)÷C=

K 得X

P = M

Mod

C

If P = 0 Then GoTo

SS P=0

表示得到整数解了,便跳出循环

Next X

SS:

Print Spc(4); " X =";

X

Y(I)=

Y(I-1)+X*

G(I-1)

算得各级方程的最小解。如23、86

Print Spc(4); "

最小";

Y(I)

Print Spc(4); "

公倍

=";

G(I)

Next I

Print Spc(4); "

通解

X = "; Y(N); " + "; G(N); " N

( N=1、2、3

)"

Print Spc(4); "

完"

Print

End Sub

四 化为相同除数

X≡2 (mod 7 )

X≡5 (mod 9 )

X≡1 (mod 5 )

这三个同余式,除数不同,分别为7、9、5,为了能利用同余式的和差特性,简化计算,先设法使它们的除数相同,为此:

X≡2 (mod 7 )两边都乘9*5,得X*45≡2*45 (mod 7*45 ) →45

X≡90 (mod 315 ) …(1)

X≡5 (mod 9 ) 两边都乘7*5,得X*35≡5*35 (mod 9*35 ) →35

X≡175 (mod 315 ) …(2)

X≡1 (mod 5 ) 两边都乘7*9,得X*63≡1*63 (mod 9*63 ) →63

X≡

63 (mod 315 ) …(3)

(1)+(2)+(3)=

(4) →143 X≡328 (mod 315 )…4)

根据同余式的加减性质,(1)+(2)+(3)得:

143 X≡328 (mod 315 ) 即 143

X≡13 (mod 315 ),化为带余除式为:

143 X÷315=K

…13

亦即143X-13=315

K ,有(143X-13)÷315=K(整数)

(143X-13)÷315=K(整数)用通式表示为(AX-B)÷S=K

解得X=86、K=38 (实际上不用它,在此仅确认它是整数就行了),

通解为X=86+315

N ( N=1、2、3

)

或X≡86 (mod 315 )

这一种算法,在所有五种算法中,我认为是最简洁、工作量最小的算法。因为不管方程有多少个,它解算形如(AX-B)÷S=K这种不定方程,仅解一次而已。而其他方法要解多次。同时,这种算法也容易理解,算法单纯。

我编了一个程序。这个程序,非但可以解算互质的同余方程组,还可以解算非互质的同余方程组。如果方程组不合解题条件,会显示“无解”。操作方法是:

输入方程个数N=3

再按方程顺序,输入每个方程的除数与余数

:7 2 9 5 5 1 ↙

就得结果:

通解

X = 86+315

N ( N=1、2、3

)

K=38

成功

广义同余方程组的“除数相同法”Visual

Basic程序。

Private

Sub Form_Click(): Form1.Width = 11520: Form1.Height =

15360

Dim W(20)

: Dim R(20) :  Dim Y(20) : Dim F(20) : Dim

V(20)

N =

InputBox("输入方程个数 N

=")

For I = 1

To N : W(I) = InputBox("输入模W(I)=") : R(I) =

InputBox("输入余R(I)=") :

Next I

For I = 1

To N: Print Spc(4); " x÷ "; W(I); "

余 "; R(I) :

Next I

Print

For I = 1

To N : V(I) = W(I) :  Next I

For I = 1

To N - 1

n1 = V(1)

m1 = V(2)

If m1 >

n1 Then

M = m1: G

= n1

Else

M = n1: G

= m1

End

If

Do

E = M Mod

G

If E = 0

Then Exit Do

M =

G

G =

E

Loop

S = m1 *

n1 / G

V(1) = S

V(2) = V(I + 2)

Next

I

Print

A = 0

:

For I = 1

To N : Y(I) = S / W(I) : A = A + Y(I) : Next I

B =

0

For I = 1

To N : F(I) = R(I) * Y(I) : B = B + F(I) : Next I

Print

Spc(4); " 同余式 "; A;

" X ≡ "; B; " ( MOD"; S;

" ) "

Print

SP =

1

For I = 1

To N : SP = SP * W(I) :  Next I

If (S =

SP) Then GoTo S1

If (S

<> SP) Then Print Spc(4); " 注意 非互质 ": Print: GoTo PP

Print

S1:

For k = 1

To 10000000

M = (S * k + B)

X = M / A

If (X -

Int(X)) = 0 Then GoTo S2

Next

k

S2:

If k =

10000001 Then Print Spc(4); " 无解 ": GoTo

ZZ

Print

Spc(4); " k = "; k; " 通解 X = "; X; "

+ "; S; " N ":

GoTo ZZ

Print

PP:

For k = 1

To 10000

M = (S * k + B)

X = M / A

If (X -

Int(X)) <> 0 Then GoTo H1

For J = 1

To N

C = (X -

R(J)) / W(J)

If (C -

Int(C)) <> 0 Then GoTo H1

Next

J

Print

Spc(4); " k = "; k; " 通解 X = "; X; "

+ "; S; " N ":

GoTo ZZ

H1:

Next

k

Print

Spc(4); "无解 "

ZZ:

Print

Print

Spc(4); " 完 "

End

Sub

操作方法及示例

例一2组数据:33 余 22 、39 余 31

程序运行后,显示“ 输入方程个数 N = ” 、“输入模W(I)=”、“输入余R(I)” 等,即顺次输入: 2、 33、22、39、31 。

电脑运算后显示:

X ÷33余22

X ÷39余31

同余式24 X ≡ 627 (MOD 429)

注意 非互质

K =

9

通解X= 187 + 429

n

例二 输入

4、5、2、7、3、13、9、31、17

电脑运算后显示:

5余2

7余3

X÷13余9

X÷31余17

同余式6376 X ≡

29187 (MOD 429)

k=1477

通解X≡3272+14105N

分析:上面4个同余式是互质的,所以没有显示 注意 非互质 ,直接算得结果。

例三 输入 2、7、2、21、16

电脑运算后显示:

X÷ 7余2

21余 16

同余式4 X ≡ 22 (MOD

21)

注意 非互质

K

=2

通解X= 16+21N

分析:2个同余式,不互质。又因7与21有公约7,余数差16-2=14,7|14,所以有解。

例四: 输入3、11、10、5、2、35、27

电脑运算后显示:

11余10

5余2

X÷35余27

同余式123 X ≡ 801 (MOD 385)

注意 非互质

K =

96

通解X=307+385N

分析:后两个同余式不互质但有解。又与第一个同余式互质,应有解。

例五 输入2、7、2、21、15

电脑运算后显示:

X÷ 7余2

21余15

同余式4 X ≡ 21 (

MOD 21)

注意 非互质

无解

五典经的、“大衍求一术”解法

X≡R1 (mod m1 )

X≡2 (mod 7 )

X≡R2 (mod m2)

X≡5 (mod 9 )

X≡R3 (mod m3)

X≡1 (mod 5 )

名词注释及计算步骤:

1

余数R:、R1=2、R2=5、R3=1

2

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

3

模的最小公倍数G:G=m1*m2*m3,例中M=7*9*5=315

4

衍数(局部公倍数)y:Y1=m2m3、Y2=m1m3,Y3=m1m2,例中Y1=9*5=45、Y2=7*5=35、Y3=7*9=63

5

乘率C:这是解算中国剩余定理的关键,而计算“乘率”的方法,是秦九韶在《数书九章》一书中首次提出的,称之为“大衍求一术”。“求一”就是使(衍数*乘率)除以模(除数),而余数为1。即:

衍数Y*乘率C≡1 (mod m),乘率C可以经过反算而得到。例中Y1C1≡1 (mod 7 )、

Y2C2≡1 (mod 9 ) 、Y3C3≡1 (mod 5 )。

计算C1方法。由Y1C1≡1 (mod 7 ), →45C1≡1 (mod 7 ) →(45C1-1) / 7=整数N

,得C1=5。因为45*5=225,225-1=224,224÷7=32,32是整数,合符要求。C2、C3之计算也相仿。乘率C之计算见下表:

同余式 i

衍数Y

乘率C

余1

模m

检验  (Y*C-1)/m  =

整数

1

45

5

1

7

(45*C-1)/7 =N (45*5-1)/7 = 32

2

35

8

1

9

(35*C-1)/9 =N (35*8-1)/9 = 31

3

63

2

1

5

(63*C-1)/5 =N

(63*2-1)/5 = 25

最终结果,X≡R1Y1C

1+R2Y2C2+R3Y3C3

(mod G)

即X≡Σ余数*衍数*乘率

(mod G),见下表计算:

i

余数R

衍数Y

乘率C

R*Y*C

1

2

45

5

450

2

5

35

8

1400

3

1

63

2

126

Σ

1976

X≡1976

(mod 315)

1976 除去315的6倍后,剩下86,最终,X≡86

(mod 315)

“大衍求一术”的关键与难点,是如何解“衍数Y*乘率C≡1 (mod m)”,得乘率C。也就是解算方程(Y*C-1)/m =N 。如第三节所述,可以手算,也可以试算凑数,但都很烦琐。在现代计算中,就可以编个电脑程序来计算了。

2015-11-21补充:

X≡R1 (mod m1 ) →

X≡2 (mod 7 ) ×5×9

→45 X≡90 (mod 315 )

X≡R2 (mod m2)→X≡5 (mod 9 )×7×5

→35 X≡175 (mod 315)

X≡R3 (mod m3)→X≡1 (mod 5 )×7×9

→63 X≡63 (mod 315 )

→45 C1≡1 (mod 7 ) →(45 C1 -1 )

÷7

=整数

C1 =5

→35 C2≡1 (mod 9)→(35 C2 -1 )

÷9

=整数

C2 =8

→63 C3≡1 (mod 5 )→(63 C3 -1 )

÷5

=整数

C3 =2

我在2013年10月发表的博文《中国剩余定理即孙子定理的五种解法》,距今两年,阅读者6900多位。感到很欣慰。

今天编了一个解算中国剩余定理的Visual

Basic程序,供朋友们共享。解算太快了,真过瘾。例子仍用原博文的:

A≡2

(mod 7

)

A≡5 (mod 9

)

A≡1 (mod 5

)求A

操作。

输入方程个数N

= 3

输入模(除数B)与输入余数R。顺方程输:7、2 9、5 5、1↙

马上显示A=86+315K

(K= 0、1、2、3…)即A

86  (mod 315)

又陈景润著《初等数论Ⅰ》“韩信点兵”一例:有兵一队,若列成5行纵队,则末行1人。成6行纵队,则末行5人,成7行纵队,则末行4人,成11行纵队,则末行10人。求兵数。

设:A是兵数,依题意有:

A≡1

(mod

5) A≡5

(mod

6) A≡4

(mod

7) A≡10 (mod

11)

操作。

输入方程个数N

= 4

输入模(除数B)与输入余数R。顺方程输:5、1 6、5 7、4 11、10↙

马上显示A=2111+2310

K (K= 0、1、2、3…)即A≡2111

( mod  2310 )

中国剩余定理“大衍求一术” Visual Basic程序

Private Sub

Form_Click()说明

Form1.Width =

11520

视窗宽

Form1.Height =

15360

视窗高

N =

InputBox("输入方程个数N

=")输入方程个数N

Dim B (20)数组声明及容量

Dim R

(20)

Dim Y

(20)

Dim C

(20)

For I = 1

To N

B(I)

= InputBox("输入模B(I)=")输入模(除数)

B

R(I) =

InputBox("输入余R(I)=")输入余数R

Next

I

M =

1

For I = 1 To

N

M

= M *

B(I)最小公倍数M

Next

I

For I = 1

To N

Y(I)

= M / B(I)

局部公倍数、衍数Y

Next I

For I = 1

To N

For

J = 1 To 1000

Z = (Y(I) *

J - 1) / B(I)

If (Z - Int(Z)) = 0 Then

C(I) = J: GoTo SS乘率C

Next J

SS:

Next I

A =

0

For I = 1 To

N

A

= A + R(I) * Y(I) *

C(I) R×Y×C及总和Σ(R×Y×C)

Next I

For I = 1

To 1000

A

= A –M最小值A 0

If A < M Then GoTo

PP

Next I

PP:

Print

Spc(4); "A = "; A; "+ "; M;

"K (K=0 1 2 3…)

"通解A=

A 0+MN

Print

Spc(4); "成功"提示结束

End Sub

因为中国剩余定理的“大衍求一术”只适合模(除数)是两两互质的,所以这个程序也只适合模(除数)是两两互质的。如果不两两互质,则要转换成两两互质,那就很麻烦了。我一时还想不出如何编一个转换成两两互质的程序,只能到此为止。

去吧,与爱好算术的网友们共享去吧。

1

综合上述五种解法,归根到底,关键点,也是难点,就是都要解“(AX+B)÷C=

K”这种类型不定方程。而解这种不定方程的方法,既没有公式又没有窍门,归根到底还是一个“凑”字了。其中“枚举法”是小学生都懂的凑数法。因此可以说,中国剩余定理其实并不神秘,就是一个如何凑数的问题。

2五种解法中我认为“化为相同除数法”最简易、工作量最小。因为:

第一,它要使除数相同,方法最简单、统一,初中二年级学生都会。

第二,它解算不定方程“(AX+B)÷C=

K”

只解一次,也即只“凑”一次。而“逐级满足法”和“大衍求一术”,则要“凑”多次 (N次,即方程的个数)。方程个数越多,“化为相同除数法”就越显得省力。我认为应该宣传、普及一下通俗易懂的“化为相同除数”。

3至于说到“大衍求一术”的同余式“衍数Y*乘率C≡1 (mod m)”是怎样来的,又为什么成为解题的关键,在陈景润所著《初等数论Ⅰ》1978年版85页上有理论推证。这应该是一个现代数学的推证,而不是在论证秦九韶的理论就是这样的。也就是说,这是殊途同归。至于秦九韶到底是怎样想的,或许他有更容易为常人所理解的机理,那就不得而知了,于是我们钦佩古代数学家的智慧。我们钦佩古代数学家的智慧,但不一定非要走他的路,固守他的方法。有了更好的方法,应该学习推广。至于以后是不是有更好的解法,那谁又知道呢。

写后感

2013年的国庆过得很忙,甚至还起了一个早床来计算。感谢我的老伴,以她的勤劳与宽容,给了我闲暇与自由,使我能够静心地做做算术、写写文章,自得其乐,有时间消磨我的时光。

2015年11月,我在作《数论—余数习题集》时,对“逐级满足法”作了改进。对“大衍求一术”作了认真学习,进而对“化为相同除数法”作了规范化计算,还编了相应的三个Visual

Basic 程序。我高兴的把我的“发现”与神速的计算告诉我老伴。老伴点赞说,脑筋还没有老化呢。我报以-个开心的微笑,间接的感谢她为我洗衣做饭,使我安心计算、写作。

我仰望深邃的数学天空,深感自己的渺小。我浅尝一滴数学的清泉,来润湿一下我干枯的灵感。

中国剩余定理matlab程序,中国剩余定理即孙子定理的五种解法相关推荐

  1. 中国剩余定理即孙子定理的五种解法

    加深一下理解,找了点纯数学的资料(老者善学,尤老骥伏枥,况乎我也): "中国剩余定理"是公元5-6世纪.我国南北朝时期的一部著名算术著作<孙子算经>中的一个" ...

  2. 孙子定理c语言程序,中国剩余定理(孙子定理)的证明和c++求解

    <孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...

  3. 小程序页面之间数据传递的五种方法

    小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...

  4. 中国剩余定理(孙子定理)(精华详细版!)

    问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 简单点说就是,存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数.上面给出了解法.再明白这个解法的原理之前,需要 ...

  5. 中国剩余定理——孙子定理

    孙子定理是中国古代求解一次同余式组(见同余)的方法.是数论中一个重要定理.又称中国余数定理. 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何?即,一个整数除以三余二,除以五余三,除以 ...

  6. 中国剩余定理(孙子定理)详解

    为什么发现了这个定理,这要源于一道题 淮安民间传说着一则故事--"韩信点兵",其次有成语"韩信点兵,多多益善".韩信带1500名兵士打仗,战死四五百人,站3人一 ...

  7. 中国剩余定理(孙子定理)的证明和c++求解

    <孙子算经>里面的"物不知数"说的是这样的一个题目:一堆东西不知道具体数目,3个一数剩2个,5个一数剩3个,7个一数剩2个,问一共有多少个. 书里面给了计算过程及答案: ...

  8. 中国剩余定理 (孙子定理) 的证明和代码

    目录 [引入] [中国剩余定理] [代码实现] [借鉴于] [引入] <孙子算经>里有这样一个题目:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二.问物几何? 术曰:" ...

  9. 小程序页面间传参的五种方式

    文章目录 前言 1.使用globalData 2.使用storage 3.使用url 3.1 api跳转 3.2 组件跳转 4.使用通信通道 5.使用页面栈 总结 前言 由于经常需要进行页面间传参且各 ...

最新文章

  1. linux内核网络协议栈--linux bridge(十九)
  2. 如何配置 SQL Server 2005 以允许远程连接
  3. 学习笔记2——对象初始化和面向对象特性
  4. 公司要禁止QQ?【我们从协议开始分析】
  5. cmd.exe启动参数说明
  6. 最大乘积(记忆化搜索)
  7. WIFI无线路由器的五种工作模式
  8. 巨头切入,或将改变云客服市场
  9. python常用代码大全-Python常用库大全,看看有没有你需要的
  10. 外部SRAM实验,让STM32的外部SRAM操作跟内部SRAM一样(转)
  11. 3. AJAX 请求与响应
  12. ABAQUS的第一个error【删去Job-1.lck】
  13. react 中使用 marked + highlight.js 使语法高亮
  14. html+canvas+输入文字换行,canvas文字换行
  15. 机器视觉工程师前景如何,计算机视觉工程师前景
  16. [SQL必知必会] 读书笔记
  17. Google Play邮件提示: 您必须声明您的广告 AD_ID 权限
  18. vbox下的虚拟机ubuntu1604升级安全更新
  19. 销量飙升!速卖通店铺引流的独家成功方法
  20. MySQL的批量更新和批量新增优化

热门文章

  1. 在ReactNative中使用Redux简述
  2. 阿里的数据中台正在背离初心
  3. java8583报文解析及生成,粗略理解
  4. Python连接wws服务器
  5. 全志sysconfig.fex配置系统解析
  6. 高级系统架构师培训公开课举行
  7. 马尔可夫链与马尔可夫决策过程
  8. 阿里达摩院python视频教学_阿里达摩院出品的758集的python教程,据说懂中文就能入门高清版...
  9. 手机裁剪圆角图片_iOS高效图片圆角裁剪方法
  10. 南挚SEO:我们常说的站内SEO优化,到底在优化什么?