最大公约数c语言编写
时间: 2024-04-22 17:18:57 浏览: 60
这是一个用C语言编写的求解两个数最大公约数的程序。程序中使用了辗转相除法来求解最大公约数。具体来说,程序首先读入两个整数m和n,然后通过比较大小,将m和n中较大的数赋值给m,较小的数赋值给n。接着,程序进入一个while循环,每次循环都将m除以n的余数赋值给r,然后将n赋值给m,将r赋值给n,直到m%n等于0为止。此时,n的值就是m和n的最大公约数。最后,程序输出最大公约数的值。
代码中的注释如下:
```
#include<stdio.h>
int main() {
int m,n,r,t;
scanf("%d %d",&m,&n); // 读入两个整数m和n
printf("%d和%d的最大公约数是\n",m,n);
if(m<n) { // 比较大小,将较大的数赋值给m,较小的数赋值给n
t=m;
m=n;
n=t;
}
while(m%n!=0) { // 辗转相除法求解最大公约数
m%n==r;
m=n;
n=r;
}
printf("%d\n",n); // 输出最大公约数的值
return 0;
}
```
相关问题
p1005最大公约数c语言
### 回答1:
下面是一个使用辗转相除法求最大公约数的 C 语言函数:
```c
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
在此函数中,如果 `b` 为 0,则 `a` 即为最大公约数;否则递归调用 `gcd(b, a % b)`。
### 回答2:
题目为求解P1005题中的最大公约数,下面是使用C语言编写的解答:
```c
#include <stdio.h>
// 计算两个数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int n, m; // 两个数
scanf("%d %d", &n, &m); // 输入两个数
int result = gcd(n, m); // 调用最大公约数函数
printf("%d\n", result); // 输出结果
return 0;
}
```
该程序首先定义了一个`gcd`函数,用于计算两个数的最大公约数。在函数中,使用递归的方式进行求解,如果其中一个数为0,则另一个数即为最大公约数;否则,递归调用求取两个数的余数和较小数的最大公约数。
在`main`函数中,首先定义了两个整数变量`n`和`m`,用于存储输入的两个数。然后使用`scanf`函数从标准输入中读取两个数的值。接下来,调用`gcd`函数求取最大公约数,并将结果保存在`result`变量中。最后,使用`printf`函数将结果输出到标准输出中。
该程序能够求解P1005题中给定的两个数的最大公约数,并输出结果。
编写函数,用辗转相除法求最大公约数C语言
以下是使用辗转相除法求最大公约数的代码:
```c
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two integers: ");
scanf("%d %d", &a, &b);
int result = gcd(a, b);
printf("The greatest common divisor of %d and %d is %d.", a, b, result);
return 0;
}
```
我们定义了一个 `gcd` 函数,使用递归的方式实现辗转相除法求最大公约数。如果 `b` 等于0,那么最大公约数就是 `a`,这是递归的出口。否则,我们将 `b` 和 `a` 对 `b` 取余,然后递归调用 `gcd` 函数,将 `b` 和余数作为参数传递给下一层递归。
在主函数中,我们从用户输入中读取两个整数 `a` 和 `b`,然后调用 `gcd` 函数求它们的最大公约数,并输出结果。
需要注意的是,当用户输入的 `a` 或 `b` 为0时,程序会出错,因为0不能作为除数。在实际应用中,需要考虑这种情况,对程序进行错误处理。
阅读全文