编写一个函数,计算并返回给定正整数m与n的最大公约数(c语言)
时间: 2024-12-25 13:24:08 浏览: 49
在C语言中,你可以使用欧几里得算法(Euclidean Algorithm)编写一个函数来计算两个正整数m和n的最大公约数(GCD)。下面是一个简单的函数实现:
```c
#include <stdio.h>
// 函数声明
int gcd(int m, int n);
// 欧几里得算法实现
int gcd(int a, int b) {
if (b == 0) // 如果b为0,a即为最大公约数
return a;
else
return gcd(b, a % b); // 递归调用gcd,将b和a除以b的余数作为新的参数
}
// 主函数
int main() {
int m, n;
printf("请输入两个正整数:");
scanf("%d %d", &m, &n);
int result = gcd(m, n);
printf("最大公约数为:%d\n", result);
return 0;
}
```
在这个程序中,`gcd`函数通过不断用较小数替换较大数,直到余数为0,此时的非零除数就是最大公约数。
相关问题
如何使用C语言实现辗转相除法(欧几里得算法)来计算并输出两个给定正整数m和n的最大公约数以及它们的最小公倍数?
在C语言中,你可以通过辗转相除法(也称欧几里得算法)来计算两个正整数m和n的最大公约数(GCD),然后利用GCD来求得它们的最小公倍数(LCM)。以下是步骤:
1. **函数声明**:
首先,你需要定义一个函数来计算最大公约数,比如`gcd(int a, int b)`。
```c
int gcd(int a, int b);
```
2. **递归实现辗转相除法**:
使用循环或递归的方式计算最大公约数。如果b为0,则a即为最大公约数;否则,继续用a除以b,并将结果作为新的a,b作为新的b,直到b变为0。
```c
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
3. **计算最小公倍数**:
最小公倍数可以通过下面的公式计算:`lcm(a, b) = |a * b| / gcd(a, b)`。因为最大公约数总是正数,所以不需要取绝对值。
4. **主程序部分**:
在主函数中输入m和n,调用gcd函数计算最大公约数,然后计算最小公倍数并输出结果。
```c
#include <stdio.h>
int main() {
int m, n, temp_gcd, lcm;
printf("Enter two positive integers: ");
scanf("%d %d", &m, &n);
temp_gcd = gcd(m, n); // Calculate GCD
lcm = abs(m * n) / temp_gcd; // Calculate LCM
printf("The GCD of %d and %d is: %d\n", m, n, temp_gcd);
printf("The LCM of %d and %d is: %d\n", m, n, lcm);
return 0;
}
```
C语言代码求两个给定正整数的最大公约数和最小公倍数。 输入描述 在一行中输入两个正整数m,n( M 和 N <= 10^4)。 输出描述 在一行中顺序输出 M 和 N 的最大公约数和最小公倍数,两数字间以1个空格分隔。 样本输入 2 3 示例输出 1 6
在C语言中,你可以使用欧几里得算法(也称辗转相除法)来计算两个正整数的最大公约数(GCD),然后根据公式 GCD(a, b) * lcm(a, b) = a * b 计算最小公倍数(lcm)。下面是相应的代码:
```c
#include <stdio.h>
// 求最大公约数 (GCD)
int gcd(int m, int n) {
if (n == 0) {
return m;
} else {
return gcd(n, m % n);
}
}
// 根据GCD计算最小公倍数(lcm)
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
int main() {
int m, n;
// 输入两个正整数
scanf("%d %d", &m, &n);
// 输出结果
printf("%d %d\n", gcd(m, n), lcm(m, n));
return 0;
}
```
在这个程序中,首先定义了 `gcd` 函数用于递归地计算两个数的最大公约数,接着在 `main` 函数中读取用户输入的两个数,然后计算并打印它们的最大公约数和最小公倍数。
阅读全文
相关推荐

















