用c语言编写函数gcd(int m,int n)返回m与n的最大公约数
时间: 2024-02-21 08:57:24 浏览: 67
以下是用C语言编写的求最大公约数的代码:
```c
#include <stdio.h>
int gcd(int m, int n) {
int r;
while (n != 0) { // 辗转相除法求最大公约数
r = m % n;
m = n;
n = r;
}
return m;
}
int main() {
int m, n;
printf("请输入两个整数:\n");
scanf("%d%d", &m, &n);
printf("%d和%d的最大公约数是%d\n", m, n, gcd(m, n));
return 0;
}
```
这个函数使用了辗转相除法求最大公约数。具体来说,我们从m和n的余数r开始,将m赋值为n,将n赋值为r,然后重复这个过程,直到n等于0。此时,m就是m和n的最大公约数。
相关问题
用C语言编写函数int Gcd(int x, int y),使参数x 、y 为自然数。函数值为它们的最大公约数。若 x、y 都为 0,则函数值规定为 1。
当然可以,以下是一个使用C语言编写的函数,用于计算两个自然数的最大公约数(GCD)。这个函数接受两个整数参数x和y,如果x和y都为0,则函数值被规定为1。
```c
#include <stdio.h>
// Gcd函数
int Gcd(int x, int y) {
// 如果是两个零,则返回1
if (x == 0 && y == 0) {
return 1;
}
// 使用欧几里得算法求最大公约数
while (y != 0) {
int temp = x % y;
x = y;
y = temp;
}
return x;
}
int main() {
int x = 12;
int y = 18;
printf("GCD of %d and %d is %d\n", x, y, Gcd(x, y));
return 0;
}
```
这段代码中,`Gcd`函数使用欧几里得算法(也被称为辗转相除法)来求两个整数的最大公约数。如果输入的两个数都是零,函数返回1。在`main`函数中,我们使用示例值`x = 12`和`y = 18`来测试这个函数。你可以根据需要修改这些值。
请c语言编写 定义函数gcd(int num1, int num2),此函数功能为求形式参数num1和num2 的最大公约数。在main函 数中调用验证函数gcd(int num1, int num2)的正 确性。
好的,以下是代码实现:
```c
#include <stdio.h>
int gcd(int num1, int num2);
int main() {
int num1, num2;
printf("请输入两个数:\n");
scanf("%d %d", &num1, &num2);
printf("最大公约数为:%d\n", gcd(num1, num2));
return 0;
}
int gcd(int num1, int num2) {
int temp;
while (num2 != 0) {
temp = num2;
num2 = num1 % num2;
num1 = temp;
}
return num1;
}
```
在上面的代码中,我们定义了一个 `gcd` 函数,并在 `main` 函数中调用它来验证其正确性。`gcd` 函数使用辗转相除法来计算最大公约数。
阅读全文