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