多个数的 最大公约数、最小公倍数VB程序
(2015-11-27 15:28:59)
标签:
教育 |
多个数的
我想在网页上找一个计算“多个个数”的最大公约数与最小公倍数的计算机程序,但没有找到。
有VB、C语言、pascal语言的程序,但都是只算两个数的。我就不得不自己动手了。无奈只懂一点VB,所以只能编VB的。
最大公约数与最小公倍数的求法,一般认为有四种:枚举法、短除法、质因数分解法、辗转相除法。
“枚举法”、“短除法”算两三个小数值的数还方便,但数一多、且数值很大时,就不简单了。首先要作质数的判断,或者先列一张质数表(但列到多大呢?又没法预料),再一个个试除。所以用这个方法编程,这就很麻烦,放弃了。
“质因数分解法”也很麻烦。虽然我有一个求质因数的程序可以引用上,但分解出质因数后,又要判断这多个数的各质因数中,那些是共有的、那些是非共有的、那些是指数最低的,那些是指数最高的,要一一作排序、比有无、比大小,也很烦琐,不知要编多长,也叫人看不懂,过了一段时间,甚至连自己都看不明白了。又放弃。
最后是“辗转相除法”。太好了。
一、不论遇到什么数,不需要作“被质数整除”的判断或试除。
二、“辗转相除法”算法简单,用一个取余数的运算符号Mod,如r
= A Mod B
三、可以用两段相似的算法,先后得到最大公约数X与最小公倍数Y。
1
但当个数超过两个时,如A、B、C、D,有(A、B、C、D)=X、但A×B×C×D ≠ X×Y,因此最小公倍数〔A、B、C、D〕=Y,要独立计算才行。
2
用“辗转相除法”求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。有:
(A、B)=x1
同样:
用“辗转相除法”求几个数的最小公倍数,可以先求出其中任意两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个数为止。最后所得的那个最小公倍数,就是所有这些数的最小公倍数。有:
(A、 B)
=S
(y1、C)
=T
(y2、D)
=U
计算最大公约数与最小公倍数时,其中调换的数据X1、Y1、X2、Y2不同,但取余的循环是相同的,所以算法相似。说明到此。请看程序:
多个数的
Private Sub Form_Click()
Form1.Width
Form1.Height
Dim
A(20)
Dim Y(20)
P = InputBox
For I = 1 To P
Next I
For I = 1 To P
Next I
For I = 1 To P – 1
If m1 > n1 Then
m = m1: N = n1
Else
m = n1: N = m1
End If
Do
R = m Mod
N
If R = 0 Then Exit
Do
m = N
N = R
Loop
Print Spc (4); n1; "
Next I
Print Spc (4); "成功"
For I = 1 To P –
1
If m1 > n1 Then
m = m1: N = n1
Else
m = n1: N = m1
End If
Do
R = m Mod N
If R = 0 Then Exit Do
m = N
N = R
Loop
B = m1 * n1 /
N
Print Spc (4) ; n1; "
Next I
Print Spc (4) ; "又成功"
End Sub
算例
视窗显示结果:
8712 与
594
198
18
成功
8712
26136
78408
又成功
O K
最终:
8712
8712