使用c语言if语句输入两个正整数m和n,求其最大公约数和最小公倍数(用辗转相除法)。
时间: 2024-11-03 14:22:05 浏览: 43
在C语言中,我们可以使用if语句配合辗转相除法(也称欧几里得算法)来计算两个正整数m和n的最大公约数(GCD),然后通过公式gcd(m, n) * min(m, n) = lcm(m, n)来计算它们的最小公倍数(LCM)。以下是基本步骤:
1. 定义函数来计算GCD:
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
在这个函数中,如果n为0,则m即为GCD;否则,递归地计算n和m除以n的余数的最大公约数。
2. 计算LCM:
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
这里直接用乘积除以GCD得到结果。
3. 主程序中获取用户输入并调用上述函数:
```c
#include <stdio.h>
int main() {
int m, n, result;
printf("请输入两个正整数m和n:");
scanf("%d %d", &m, &n);
// 检查输入是否有效
if (m <= 0 || n <= 0) {
printf("输入错误!请输入正整数。\n");
return 1;
}
// 计算GCD和LCM
result = gcd(m, n);
int lcm_value = lcm(m, n);
printf("最大公约数(GCD): %d\n", result);
printf("最小公倍数(LCM): %d\n", lcm_value);
return 0;
}
```
阅读全文