c语言编写程序,输入两个正整数m和n,求其最大公约数和最小公倍数。(不使用函数)
时间: 2024-10-12 21:07:06 浏览: 39
在C语言中,我们可以使用欧几里得算法(Euclidean Algorithm)来计算两个正整数的最大公约数(Greatest Common Divisor,GCD),然后根据公式 GCD(m, n) * LCM(m, n) = |m * n| 来计算最小公倍数(Least Common Multiple,LCM)。以下是步骤:
1. **计算GCD**:
- 使用循环,直到找到m和n都除以对方余数为0的情况。这个余数就是它们的最大公约数。
- 设定临时变量`temp`,每次将较大的数赋给`temp`,较小的数作为下一轮的`m`,原来的余数作为新的`n`。
```c
int gcd(int m, int n) {
while (n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return m;
}
```
2. **计算LCM**:
- 最小公倍数等于两数乘积除以他们的最大公约数。
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
为了获取用户输入并调用这两个函数,你可以创建一个主函数`main()`,如下所示:
```c
#include <stdio.h>
// ... (上述GCD和LCM函数)
int main() {
int m, n;
printf("请输入两个正整数m和n: ");
scanf("%d %d", &m, &n);
int gcd_val = gcd(m, n);
int lcm_val = lcm(m, n);
printf("最大公约数(GCD): %d\n", gcd_val);
printf("最小公倍数(LCM): %d\n", lcm_val);
return 0;
}
```
阅读全文