求两个数的最大公约数c语言
时间: 2024-10-02 13:02:30 浏览: 33
在C语言中,求两个整数的最大公约数(Greatest Common Divisor,GCD)通常可以使用欧几里得算法(Euclidean Algorithm)。这个算法基于一个基本原理:两个整数a和b(a > b),它们的最大公约数等于b和a除以b的余数c的最大公约数。以下是简单的递归实现:
```c
#include <stdio.h>
// 函数声明
int gcd(int a, int b);
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("这两个数的最大公约数是:%d\n", result);
return 0;
}
// 欧几里得算法的实现
int gcd(int a, int b) {
if (b == 0)
return a; // 当b为0时,最大公约数为a
else
return gcd(b, a % b); // 递归调用gcd函数,更新a和b
}
```
相关问题
求两数最大公约数c语言
代码怎么写?
可以使用辗转相除法求两数的最大公约数,代码如下:
```c
#include <stdio.h>
int main()
{
int a, b, r, gcd;
printf("请输入两个数:");
scanf("%d %d", &a, &b);
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
r = a % b;
while (r != 0) {
a = b;
b = r;
r = a % b;
}
gcd = b;
printf("两数的最大公约数为:%d\n", gcd);
return 0;
}
```
注意要考虑输入的数的大小关系,把大的数放在前面,方便后面的操作。
递归求两个数的最大公约数c语言
以下是使用递归方法求两个数的最大公约数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
int gcd(int n, int m);
int main() {
int n, m, t;
scanf("%d %d", &n, &m);
t = gcd(n, m);
printf("%d", t);
return 0;
}
int gcd(int n, int m) {
long s;
if (m == 0) {
s = n;
} else {
s = gcd(m, n % m);
}
return s;
}
```
阅读全文