在计算最大公约数和最小公倍数时,下面这个算法为啥最小公倍数不能成功执行
 Dim m As Long, n As Long, r As Long, t As Long
        Dim sum As Long
        m = Val(TextBox1.Text)
        n = Val(TextBox2.Text)
        If m <= 0 Or n <= 0 Then
            MsgBox("输入数据出错")
            End
        End If
        If m < n Then
            t = m
            m = n
            n = t
            t = m * n
        End If
        Do
            r = m Mod n
            m = n
            n = r
        Loop While r <> 0
        sum = t / m
        TextBox3.Text = CStr(m)
        TextBox4.Text = CStr(sum)

解决方案 »

  1.   

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim m As Long, n As Long, r As Long, t As Long
            m = Val(TextBox1.Text)
            n = Val(TextBox2.Text)        TextBox3.Text = GCD(m, n)
            TextBox4.Text = LMD(m, n)    End Sub    'M,N>0
        '求最大公约数
        Public Function GCD(ByVal M As Long, ByVal N As Long) As Long
            Dim t As Long
            GCD = M
            Do
                t = GCD Mod N
                GCD = N
                N = t
            Loop Until t = 0
        End Function    '求最小公倍数
        Public Function LMD(ByVal M As Long, ByVal N As Long) As Long
            LMD = M * N \ GCD(M, N)
        End Function