编写函数计算两个整数m,n的最大公约数 int gcd(int m,int n),在主函数中调用输出12,15的最大公约数。
时间: 2024-10-20 09:13:43 浏览: 81
在编写函数计算两个整数m和n的最大公约数(Greatest Common Divisor, GCD),可以采用欧几里得算法(Euclidean Algorithm)。这个算法的基本思想是利用辗转相除法,即对于任意两个正整数a和b,它们的最大公约数等于a除以b的余数c和b之间的最大公约数。
下面是一个简单的C语言函数示例来计算gcd:
```c
#include <stdio.h>
int gcd(int m, int n) {
// 如果n为0,则m就是最大公约数
if (n == 0) {
return m;
} else {
// 否则递归调用gcd(n, m % n)
return gcd(n, m % n);
}
}
int main() {
int m = 12, n = 15;
int result = gcd(m, n);
printf("The greatest common divisor of %d and %d is: %d\n", m, n, result);
return 0;
}
```
在这个例子中,`main()`函数中调用了`gcd()`函数并传入了12和15作为参数,然后输出这两个数的最大公约数。运行这段程序,你会看到结果为3,因为3是12和15都能整除的最大数字。
相关问题
C语言 ■从键盘输入两个正整数m和n,求其最大公约数和最小公倍数。要求编写自定义函数GCD()和LCM( ),函数GCD()计算两个正整数的最大公约数,函数LCM()计算两个正整数的最小公倍数,在主函数中调用这两个函数计算并输出m和n的最大公约数和最小公倍数。
在C语言中,你可以通过编写两个自定义函数GCD()和LCM()来计算两个正整数的最大公约数(Greatest Common Divisor,简称GCD)和最小公倍数(Least Common Multiple,简称LCM)。这里是一个简单的实现示例:
```c
#include <stdio.h>
// 自定义函数,采用欧几里得算法计算GCD
int GCD(int m, int n) {
if (n == 0)
return m;
else
return GCD(n, m % n);
}
// LCM基于公式:a * b = GCD(a, b) * lcm(a, b),计算LCM
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);
// 调用GCD和LCM函数计算结果
int gcd_result = GCD(m, n);
int lcm_result = LCM(m, n);
printf("最大公约数(GCD): %d\n", gcd_result);
printf("最小公倍数(LCM): %d\n", lcm_result);
return 0;
}
```
在这个程序中,首先通过`scanf()`从用户输入获取两个正整数m和n,然后分别调用GCD和LCM函数计算它们的值,并在main函数中输出结果。
定义一个求最大公约数函数int gcd(int x, int y),在主函数输入两个整数,然后调用gcd()输出这两个整数的最大公约数。
以下是求最大公约数的函数gcd()的代码实现:
```c++
#include <iostream>
using namespace std;
int gcd(int x, int y) {
if (y == 0) {
return x;
}
return gcd(y, x % y);
}
int main() {
int a, b;
cout << "请输入两个整数:" << endl;
cin >> a >> b;
int ans = gcd(a, b);
cout << a << " 和 " << b << " 的最大公约数为:" << ans << endl;
return 0;
}
```
该程序先定义了一个名为gcd()的函数,接受两个整数参数x和y,然后使用递归的方式,将y和x%y作为参数传递给gcd(),直到y等于0时返回x。
在主函数中,程序会提示用户输入两个整数,并调用gcd()函数计算它们的最大公约数。最后,程序输出计算结果。
阅读全文
相关推荐

















