vb求最大公约数fornext语句

vb求最大公约数fornext语句,第1张

Private Sub Command1_Click()
m = InputBox("输入第一个自然数")
n = InputBox("输入第二个自然数")
If m > n Then t = m: m = n: n = t
Dim i As Integer, x As Integer
For i = 1 To m
If n Mod i = 0 And m Mod i = 0 Then
x = i
End If
Next

MsgBox ("最大公约数为" & x)
End Sub

VB求最大公约数VB程序是需要进行多次辗转相除法来求得。

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。

VB实现辗转相除需要通过循环结构实现。

循环结构,循环结构允许重复执行一行或数行代码。Visual Basic 支持的循环结构有:

DoLoop
ForNext

For EachNext 

本代码运用DoLoop组成的自定义函数实现求多个数的最大公约数。

Option Explicit
    Dim m, n, t, r, j
    Dim x As Integer, y As Integer, z As Integer, w As Integer
    Dim t1 As Integer, t2 As Integer, t3 As Integer, t0 As Integer
Private Sub Command1_Click() '求三个数的
    x = Val(Text1Text)
    y = Val(Text2Text)
    z = Val(Text3Text)
    t1 = gys(x, z)
    t2 = gys(x, y)
    t = gys(t1, t2)
    Print t;
End Sub
   
Private Sub Command2_Click() '求四个数的
    x = Val(Text1Text)
    y = Val(Text2Text)
    z = Val(Text3Text)
    w = Val(Text4Text)
    t1 = gys(x, z)
    t2 = gys(x, y)
    t3 = gys(x, w)
    t = gys(t1, t2)
    t = gys(t, t3)
    Print t;
End Sub
Public Function gys(m, n) '最大公约数函数
    Do
        r = m Mod n
        m = n
        n = r
    Loop Until r = 0
    gys = m
End Function

Private Sub Form_click()
m = Val(InputBox("输入m"))
n = Val(InputBox("输入n"))
If m < n Then
t = m: m = n: n = t
r = m Mod n
Do While r <> 0
m=n:n=r:r=m mod n
Loop
Print m; ","; n; "的最大公约数"; n
Print "最小公倍数=", m n / n '问题出现在这句mn/n=m
End Sub
修改如下:
Private Sub Form_click()
m = Val(InputBox("输入m"))
n = Val(InputBox("输入n"))
m1=m:n1=n '添加m1,n1保存m,n的值
If m < n Then
t = m: m = n: n = t
r = m Mod n
Do While r <> 0
m=n:n=r:r=m mod n
Loop
Print m; ","; n; "的最大公约数"; n
Print "最小公倍数=", m1 n1 / n
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12829735.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存