1.输入两个正整数m和n,求其最大公约数和最小公倍数。用c语言写代码
时间: 2024-10-23 10:12:02 浏览: 17
在C语言中,你可以使用欧几里得算法(也称辗转相除法)来计算两个正整数的最大公约数(GCD),然后利用公式 GCD(a, b) * LCM(a, b) = a * b 来求解最小公倍数(LCM)。以下是实现这个功能的一个简单示例:
```c
#include <stdio.h>
// 求最大公约数
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);
}
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;
}
```
在这个程序中,首先定义了一个递归函数`gcd`用于求最大公约数,接着`lcm`函数通过乘积除以两数的最大公约数得到最小公倍数。用户输入两个数字后,会打印出它们的最大公约数和最小公倍数。
相关问题
.输入两个正整数m和n,求其最大公约数和最小公倍数。C语言
在C语言中,计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)和最小公倍数(Least Common Multiple,简称LCM),可以利用欧几里得算法(Euclidean Algorithm)来求解GCD,然后通过公式 GCD(m, n) * LCM(m, n) = m * n 来计算LCM。
下面是简单的步骤:
1. **求最大公约数 (GCD)**:
- 使用递归的方式实现欧几里得算法:如果n除以m余数为0,则m即为GCD;否则,GCD等于n除以m的商。
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
2. **求最小公倍数 (LCM)**:
- 利用公式 LCM(m, n) = m * n / GCD(m, n) 计算。
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
**完整代码示例**:
```c
#include <stdio.h>
// 求最大公约数函数
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
// 主函数,获取用户输入并显示结果
int main() {
int m, n;
printf("请输入两个正整数: ");
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;
}
```
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;
}
```
在这个例子中,用户将看到提示输入两个数字,然后程序会输出它们的最大公约数和最小公倍数。
阅读全文