excel中使用vba来求取两个数的最大公约数

2025-09-26 13:27:01

1、首先打开一个工作样表作为例子,并进入vba代码编辑窗口。

excel中使用vba来求取两个数的最大公约数

2、在编辑窗口中输入以下代码。

Sub 最大公约数()

    Dim m As Integer, n As Integer

    Dim m1 As Integer, n1 As Integer

    Dim t As Integer

    m = InputBox("输入自然数m:")

    n = InputBox("输入自然数n:")

    m1 = m

    n1 = n

    If m1 < n1 Then

        m1 = n

        n1 = m '交换m和n的值

    End If

    Do

        r = m1 Mod n1

        If r = 0 Then Exit Do

        m1 = n1

        n1 = r

    Loop

    str1 = m & "," & n & "的最大公约数=" & n1

    MsgBox str1

End Sub

excel中使用vba来求取两个数的最大公约数

3、我们先要知道最大公约数的求法,以本代码为例使用的是辗转相除法,定义是两个整数的最大公约数等于其中较小的那个数和两数的和相除余数为最大公约数。所以我们先将两个整数做一个定义。

excel中使用vba来求取两个数的最大公约数

4、接着是需要新定义两个整数变量为m1,n1用作计算。不直接使用m和n作为变量的原因大家很清楚是为了在最后显示结果的时候,可以直接调用。

excel中使用vba来求取两个数的最大公约数

5、这里的if判断语句,是为了确定两个整数中较小的那个值作为除数。

If m1 < n1 Then

        m1 = n

        n1 = m '交换m和n的值

    End If

大家可以理解为在输入m,n值时会发生第一个数比第二个数大的时候,做这样一个重新赋值,来简单化后面的重复取余过程。

excel中使用vba来求取两个数的最大公约数

6、这里是做重复取余,直到余数为0中止。

excel中使用vba来求取两个数的最大公约数

7、最后定义一个变量显示n1值为最大公约数,并使用msgbox函数显示其信息。

excel中使用vba来求取两个数的最大公约数

8、按F5进行调试。我们还可以在loop循环里设定一个debug.print r来调试每次取余的求值。来帮助我们理解这段循环语句的实际计算过程。大家注意这两个代码

m1 = n1

n1 = r

这里是将M1取n1值,而n1取求得的余值。按过程计算是越来越小,最终mod得值为0。

excel中使用vba来求取两个数的最大公约数

9、先写到这里了,谢谢大家的观看。

祝大家生活愉快。

小编还有许多其他的经验可以观看,如果无法解决问题可以联系小编进行咨询。

看不清楚图片的可以点击放大再看哦。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢