中国剩余定理 最简易、工作量最小的算法:“化为相同除数”法
(2015-12-03 17:31:43)
标签:
教育 |
中国剩余定理 最简易、工作量最小的算法:“化为相同除数”法
一、枚举法
二、解不定方程法
三、逐级满足法
四、化为相同除数法、
五、典经的、“大衍求一术”解法
在五种解法中,我认为最简易、工作量最小的解法,就是“化为相同除数法”。
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何。”即:
A≡2
求A
解算步骤:
1
A÷
3
= X
… 2
A÷
7
= Z
… 2
注:除数3、5、7的最小公倍数是3×5×7=105,就拿105作为相同的除数。为此,各式乘一个其他除数的公倍数(可以叫局部公倍数),如第一式乘(5×7=) 35,35就是第二式、第三式的公倍数。等等。由于整式乘一个数,所以商不变。商X、Y、Z,除了必须是整数外,与解题结果无关。所以以后只用整数K表示商就可以了。在同余式中,就根本不没有商的位置。
这样,联立方程组中的除数,都为最小公倍数105,除数相同了。
2
各式如何加减,有多种选择。如:
一
71A÷105
= K
注:这里余数超过除数,可转化余数,等效为 71A÷105
=K
解不定方程式 (4) 或 (5),都得A=23 。
为简单起见,以后可以不必转化余数,直接解方程式 (4) 就行了。
至于如何解71A÷105
= K
二
1
A÷105
=K
解方程式(6),得A =
23
三
41A÷105
= K
解方程式(7), 便得A =
23
四
由此可见,不论取何种加减组合方式,结果都一样。为了统一起见,以后一律以各式相
加为准,不必有加有减,便得到一个等效的二元一次不定方程式:(AX-B)÷R=K 。其中
A是未知数X的系数之和。B是余数之和,R是除数,也是最小公倍数。K是商,它也是未
知数,但只要求是整数而不管它的大小。目的就是求X 而已。
3
解这个不定方程,归根到底,就是试算,其实就是凑数而已。如
变为 (71A-163)÷105 = K 后, 求A与K的整数解,
A
22
23
凑到A=23时,得K=14,是整数了,就完成。这A=23就是最小解,通解为:
当然,也不必非一个不漏的凑,有时可以机巧的少凑一些,直奔目标。但归根到底还是凑。有电脑则可以用电子表格算,那就快多了,但还得要一个个的审视那个K是整数。如果K=5342,你就得从1到5342一、一检视。鼠标滚动也不能太快,总得劳神些罢。
于是我就编了一个VB程序,不必烦劳了。
结
“化为相同除数法”之所以最简易、工作量最小,是因为:
1
2 “中国剩余定理”,不论“逐级满足法”还是“大衍求一术”,都要解(AX-B)÷R=K这种不定方程式。而其解法,从根本上说,就是一个字:“凑”。
“化为相同除数法” 解算不定方程
3
我编的VB程序,使用、操作方法是:
1
2
3
附:中国剩余定理“化为相同除数法”的V B程序
Private Sub
Form_Click()
Form1.Width =
11520
Form1.Height =
15360
Dim
W(20)
Dim
R(20)
Dim Y(20)
Dim F(20)
N = InputBox
For I = 1 To N
R(I) = InputBox("输入余R(I)=")
S = 1
For I = 1 To N
Next I
A = 0
For I = 1 To N
A = A + Y(I)
Next I
B = 0
For I = 1 To N
B = B + F(I)
Next I
Print Spc(4); " A= "; A;
"
For X = 1 To
1000000
If P = 0
Then GoTo
SS
Next X
SS:
Print Spc(4); " X =";
X
Print Spc(4); " 通解 X = "; X; " + "; S; " N ( N = 0、1、2、3 … )"
Print Spc(4); " 完"
End Sub