最大公约数算法 c语言
时间: 2023-12-23 22:27:30 浏览: 96
以下是三种C语言中求最大公约数的算法:
1. 辗转相除法(欧几里德法):
```c
int divisor(int a, int b) {
int temp;
if (a < b) {
temp = a;
a = b;
b = temp;
}
while (b != 0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
```
2. 函数递归调用:
```c
int gcd(int a, int b) {
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
```
3. 穷举法:
```c
int gcd(int a, int b) {
int i, gcd;
for (i = 1; i <= a && i <= b; i++) {
if (a % i == 0 && b % i == 0)
gcd = i;
}
return gcd;
}
```
相关问题
求最大公约数的C语言代码
求两个整数的最大公约数(Greatest Common Divisor, GCD)在C语言中可以使用欧几里得算法(Euclidean Algorithm)来实现。以下是简单的代码示例:
```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); // 递归调用,将b和a除以b的余数作为新的a和b
}
}
```
在这个程序中,`gcd`函数通过不断取余数的方式逐步缩小两个数的范围,直到其中一个变为零,另一个就是它们的最大公约数。
1和0的最大公约数,若没有则输出1和0没有最大公约数(C语言)
在C语言中,计算两个整数a和b的最大公约数(Greatest Common Divisor, GCD),可以使用欧几里得算法。如果a和b都是非负整数,并且其中一个为零,则gcd(a, b)为另一个数;否则,通过递归的方式不断取余数直到余数为零,此时的除数就是最大公约数。以下是使用欧几里得算法的一个简单实现:
```c
#include <stdio.h>
// 定义函数计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1 = 1;
int num2 = 0;
// 调用gcd函数并打印结果
int result = gcd(num1, num2);
printf("最大公约数是: %d\n", result);
// 判断1和0是否有最大公约数的特殊情况
if (result == 1)
printf("1和0没有最大公约数.\n");
else
printf("对于1和0,最大公约数是1.\n");
return 0;
}
```
在这个例子中,当num2为0时,程序会直接返回num1作为最大公约数,而1和0本身就没有大于1的共同因子,所以额外说明了它们没有更大的公约数。
阅读全文
相关推荐













