c语言中用循环语句输入两个正整数,求其最大公约数和最小公倍数
时间: 2024-12-23 07:26:11 浏览: 18
在C语言中,你可以使用欧几里得算法(辗转相除法)来计算两个正整数的最大公约数(GCD),然后利用公式 GCD(a, b) * lcm(a, b) = a * b 来找出它们的最小公倍数(lcm)。这里是一个简单的示例程序,它使用do...while循环来获取用户输入并计算结果:
```c
#include <stdio.h>
// 计算最大公约数 (GCD)
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 计算最小公倍数 (lcm)
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2;
// 使用do...while循环获取输入,确保至少输入一次
do {
printf("请输入第一个正整数: ");
scanf("%d", &num1);
} while (num1 <= 0); // 检查是否为正整数
do {
printf("请输入第二个正整数: ");
scanf("%d", &num2);
} while (num2 <= 0);
printf("最大公约数 (GCD): %d\n", gcd(num1, num2));
printf("最小公倍数 (LCM): %d\n", lcm(num1, num2));
return 0;
}
```
阅读全文