小编致力于为大家奉献最有效的经验,让大家能够解决掉问题,但是大家也都知道,每个人遇到的情况都是不一样的,大家在看小编经验的同时,除了跟随操作,也需要自己的思考,举一反三的解决问题,这样才会变得更加有内涵,成为和小编一样的经验达人。excel中使用vba来求取两个数的最大公约数,这里,让小编给大家介绍一下。

方法/步骤
-
1
首先打开一个工作样表作为例子,并进入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
-
3
我们先要知道最大公约数的求法,以本代码为例使用的是辗转相除法,定义是两个整数的最大公约数等于其中较小的那个数和两数的和相除余数为最大公约数。所以我们先将两个整数做一个定义。
-
4
接着是需要新定义两个整数变量为m1,n1用作计算。不直接使用m和n作为变量的原因大家很清楚是为了在最后显示结果的时候,可以直接调用。
-
5
这里的if判断语句,是为了确定两个整数中较小的那个值作为除数。
If m1 < n1 Then
m1 = n
n1 = m '交换m和n的值
End If
大家可以理解为在输入m,n值时会发生第一个数比第二个数大的时候,做这样一个重新赋值,来简单化后面的重复取余过程。
-
6
这里是做重复取余,直到余数为0中止。
-
7
最后定义一个变量显示n1值为最大公约数,并使用msgbox函数显示其信息。
-
8
按F5进行调试。我们还可以在loop循环里设定一个debug.print r来调试每次取余的求值。来帮助我们理解这段循环语句的实际计算过程。大家注意这两个代码
m1 = n1
n1 = r
这里是将M1取n1值,而n1取求得的余值。按过程计算是越来越小,最终mod得值为0。
-
9
先写到这里了,谢谢大家的观看。
祝大家生活愉快。
小编还有许多其他的经验可以观看,如果无法解决问题可以联系小编进行咨询。
看不清楚图片的可以点击放大再看哦。
END
文章评论