用c语言做一个代码,输入m、n,求两者的最大公约数合最小公倍数
时间: 2024-05-05 15:16:31 浏览: 36
以下是用c语言实现的代码:
```c
#include <stdio.h>
// 求最大公约数
int gcd(int a, int b)
{
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 求最小公倍数
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int main()
{
int m, n;
printf("请输入两个整数m和n:");
scanf("%d%d", &m, &n);
printf("它们的最大公约数为:%d\n", gcd(m, n));
printf("它们的最小公倍数为:%d\n", lcm(m, n));
return 0;
}
```
代码思路:
1. 定义 gcd 函数,用递归实现辗转相除法求最大公约数;
2. 定义 lcm 函数,用公式 a * b / gcd(a, b) 求最小公倍数;
3. 在主函数中读入两个整数 m 和 n,分别调用 gcd 和 lcm 函数求它们的最大公约数和最小公倍数;
4. 输出结果。
注意事项:
1. 在使用 scanf 函数读入整数时,需要使用格式控制符 %d;
2. 在使用 printf 函数输出整数时,需要使用格式控制符 %d;
3. 在定义函数时,需要指定返回值类型和参数类型;
4. 在调用函数时,需要传递参数。
相关问题
1. 输入两个正整数m和n,求其最大公约数和最小公倍数 c语言
在C语言中,计算两个正整数`m`和`n`的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)通常可以利用欧几里得算法(Euclidean Algorithm)来找到GCD,然后通过以下公式计算LCM:
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
首先定义一个递归函数`gcd()`,它不断交换`m`和`n`,并将较大的数替换为其除以较小数的余数,直到余数为0,此时较小的数即为两者的最大公约数。
然后,在`lcm()`函数中,通过乘积除以最大公约数得到最小公倍数。
如果你需要用户输入这两个数并运行这个程序,你可以添加下面的主函数部分:
```c
#include <stdio.h>
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;
}
```
在这个例子中,用户将看到提示输入两个数字,然后程序会输出它们的最大公约数和最小公倍数。
用c语言编写程序,输入两个整数m和n,输出它们的最大公约数和最小公倍数
在C语言中,计算两个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)可以利用辗转相除法(Euclidean Algorithm)和公式 `LCM(a, b) = |a * b| / GCD(a, b)` 来实现。以下是简单的步骤:
1. **求最大公约数(GCD)**:
- 使用while循环,当`b`不等于0时,交换`a`和`b`的值,并将`a`赋值为两者的余数(`a % b`)。
- 当`b`为0时,`a`就是最大公约数。
2. **求最小公倍数(LCM)**:
- 根据上面提到的公式,`LCM = abs(m * n) / a`,其中`abs()`函数用于获取绝对值,因为结果应该是正数。
下面是一个简单的C程序示例:
```c
#include <stdio.h>
// 辗转相除法求最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
int main() {
int m, n;
printf("请输入两个整数m和n:");
scanf("%d %d", &m, &n);
int result_gcd = gcd(m, n);
int result_lcm = lcm(m, n);
printf("最大公约数(GCD): %d\n", result_gcd);
printf("最小公倍数(LCM): %d\n", result_lcm);
return 0;
}
```
阅读全文