VB中求最大公约数的方法
求最大公约数的方法可以通过递减法来求,具体编程步骤如下:
Private Function gcd(x As Integer, y As Integer) As Integer
Dim div As Integer
If x < y Then
div = x
Else
div = y
End If
While div > 1
If x Mod div = 0 And y Mod div = 0 Then
gcd = div
Exit Function
Else
div = div - 1
End If
Wend
gcd = 1
End Function
扩展资料:
最大公约数的求法:
(1)质因数分解法
质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数。
例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24,60)=12。
把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。
例如:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。
(2)短除法
短除法:短除法求最大公约数,先用这几个数的公约数连续去除,一直除到所有的商互质为止,然后把所有的除数连乘起来,所得的积就是这几个数的最大公约数。
短除法求最小公倍数,先用这几个数的公约数去除每个数,再用部分数的公约数去除,并把不能整除的数移下来,一直除到所有的商中每两个数都是互质的为止,然后把所有的除数和商连乘起来,所得的积就是这几个数的最小公倍数,例如,求12、15、18的最小公倍数。
短除法的本质就是质因数分解法,只是将质因数分解用短除符号来进行。
短除符号就是除号倒过来。短除就是在除法中写除数的地方写两个数共有的质因数,然后落下两个数被公有质因数整除的商,之后再除,以此类推,直到结果互质为止(两个数互质)。
而在用短除计算多个数时,对其中任意两个数存在的因数都要算出,其它没有这个因数的数则原样落下。直到剩下每两个都是互质关系。
求最大公因数便乘一边,求最小公倍数便乘一圈。
参考资料来源:百度百科-最大公约数
VB中求最大公约数的方法:
双击command控件,进入代码编写窗口,写入如下代码即可。
Private Sub Command1_Click()
If Text1.Text = "" Then
MsgBox "请输入Text1"
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "请输入Text2"
Exit Sub
End If
If IsNumber = True Then
Text3.Text = GCD(Val(Text1.Text), Val(Text2.Text))
End If
End Sub
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Enabled = False
Command1.Caption = "计算最大公约数"
End Sub
Private Function IsNumber() As Boolean
IsNumber = True
For i = 1 To Len(Text1.Text)
If IsNumeric(Mid(Text1.Text, i, 1)) = False Then
MsgBox "请输入正整数"
Text1.Text = ""
IsNumber = False
Exit Function
End If
Next i
For i = 1 To Len(Text2.Text)
If IsNumeric(Mid(Text2.Text, i, 1)) = False Then
MsgBox "请输入正整数"
Text2.Text = ""
IsNumber = False
Exit Function
End If
Next i
End Function
Private Function GCD(x As Integer, y As Integer) As Integer
Dim r As Integer
Do Until y = 0
r = x Mod y
x = y
y = r
Loop
GCD = x
End Function
'b为最大公约数
Dim a, b As Integer
a = 2
While a <= x Or a <= y
If Int(x / a) = x / a And Int(y / a) = y / a Then
b = a
End If
a = a + 1
Wend 'vb.net中要用end while!
'输出b
Private Function gcd(x As Integer, y As Integer) As Integer
Dim div As Integer
If x < y Then
div = x
Else
div = y
End If
While div > 1
If x Mod div = 0 And y Mod div = 0 Then
gcd = div
Exit Function
Else
div = div - 1
End If
Wend
gcd = 1
End Function