正确答案:
A
解析:
如果m不等于n,则执行内层循环,退出循环的条件和m=n。输入的m、n的值有三种情况:m=n,m>n,m<n。如果m=n,则直接跳过循环,输出n1的值。下面对m>n的情况作进一步的分析,m<n的情况与之类似。
①m>n,循环执行嵌套的第一个循环,m=m—n,直到m≤n。设循环执行了x次,则In=m-xn,令a=m=m-xn为执行第一个循环后的m值。如果a=n,有n=m-xn,整理得m=(x+1.n,则说明m是n的整数倍,输出结果为n。如果a<n,执行嵌套的第二个循环,n=n-a,直到a≥n,设循环执行了y次,则n=n-ya,令b=n-ya,如果a=b,有a=n-ya,(y+1.a=n,n/a=y+1,a=m-xn=m-x(y+1.a,m/a=xy+x+1,可见a是m、n的最大公约数。
②如果b<a,也就是m>n的情况,继续①。
实际上,程序实现是的更相减损术算法,用来求两个数的最大公约数。