全部问题 > 当前问题

老师,这题我没明白,为什么只做减法也可以求最大公约数呢?

如题

Emperor 2015-10-17 10:04:57

共 1 个回答

最佳答案

祁老师 2015-10-17 10:34:26

同学 这个是用辗转相除法来实现求最大公约数的哦

这里可以通过举例子来验证一下 是否可行 

我们假设m=8 n=4 那么我们通过数学知识可以得出 最大公约数应该是4 

Do While m<>n
    Do While m>n  条件成立 执行 m=m-n 此时 m为4  不满足循环条件 跳出do while m>n循环 执行 do while n>m 循环 也不满足 跳出循环 执行print m 输出4 

窗体上有一个名为Command1的命令按钮,并有如下程序:
Private Sub Command1_Click()
Dim m As Integer,n As Integer
  m=InputBox(“输入第一个数”)
  n=InputBox(“输入第二个数”)
  Do While m<>n
    Do While m>n
      m=m-n
    Loop
    Do While n>m
      n=n-m
    Loop
  Loop
  Print m
End Sub
该程序的功能是是 ______ 。
A. 求数值m和n的最大公约数
B. 求数值m和n的最小公倍数
C. 求数值m和n中的较大数
D. 求数值m和n中的较小数
答案:A
解析:里层的两个Do循环分别是求m Mod n和n Mod m。显而易见,这个程序是使用辗转相除法来计算最大公约数。因此选A。