A-A+

下面程序的功能是求整数m n的最大公约数 请填空。 main() { int m n r;

2022-08-12 18:35:23 问答库 阅读 197 次

问题详情

下面程序的功能是求整数m、n的最大公约数,请填空。 main() { int m,n,r; scanf("%d,%d",&m,&n); if(【 】){r=m;m=n;n=r;) while(【 】) { r=m%n;m=n;n=r; } printf("%d",m); }


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:m<n或n>mr或r!=0
本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

考点:最大公约数,整数