如何使用C语言中的do-while循环结构计算两个正整数m和n的最大公约数(GCD)和最小公倍数(LCM),并展示相应的代码实现?
时间: 2024-11-27 20:10:54 浏览: 8
C语言113题
在C语言中,我们可以使用do-while循环结合Euclidean算法来计算最大公约数(GCD)。然后,通过公式 GCD(m, n) * LCM(m, n) = m * n 计算最小公倍数(LCM)。以下是代码实现:
```c
#include <stdio.h>
// 函数声明,使用欧几里得算法计算GCD
int gcd(int a, int b);
int main() {
int m, n;
printf("请输入两个正整数m和n:");
scanf("%d %d", &m, &n);
// 使用do-while循环确保至少执行一次
do {
int temp = m % n; // 更新临时变量
m = n; // 新的m等于旧的n
n = temp; // 新的n等于余数
} while (n != 0); // 当n变为0时,循环结束,此时m就是GCD
printf("最大公约数(GCD): %d\n", m);
// 计算LCM
int lcm = (m * n) / gcd(m, n);
printf("最小公倍数(LCM): %d\n", lcm);
return 0;
}
// 欧几里得算法实现GCD
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
阅读全文