使用while循环求两个正整数的最大公约数和最小公倍数。请分析(1)处缺失的代码,并判断下列四个选项中哪一项无法实现上述功能。
求解最大公约数和最小公倍数的基本思路:
-
利用辗转相除法求出最大公约数。
-
进而求出最小公倍数。
#include <stdio.h>
int main(int argc, char** argv)
{
int a, b, c, m, t;
printf("请输入两个数:");
scanf("%d,%d", &a, &b);
if (a < b)
{
t = a;
a = b;
b = t;
}
m = a * b;
c = a % b;
(_____1_____)
printf("最大公约数是:%d\n", b);
printf("最小公倍数是:%d\n", m / b);
}
while (1)
{
if (c == 0)
break;
a = b;
b = c;
c = a % b;
}
//正确
do {
a = b;
b = c;
c = a % b;
}
while (c != 0);
//错误
do {
if (c == 0)
break;
a = b;
b = c;
c = a % b;
}
while (1);
//正确
while (c != 0)
{
a = b;
b = c;
c = a % b;
}
//正确
解析:错误选项没有判断a%b是够为0的先决条件