求两个整数的最大公约数的所有编程实例
时间: 2024-06-13 12:05:26 浏览: 76
求两个整数的最大公约数有多种方法,以下是几种常见的实现方式:
1. 辗转相除法
辗转相除法,也叫欧几里得算法,是求最大公约数的一种常用方法。其基本思想是用较大的数除以较小的数,再用余数去除较小的数,如此反复,直到余数为零为止,此时较小的数即为最大公约数。
代码实现:
```c
int gcd(int a, int b) {
int r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
```
2. 更相减损法
更相减损法是另一种求最大公约数的方法,其基本思想是用较大的数减去较小的数,然后用差值继续减较小的数,如此反复,直到两数相等为止,此时的数即为最大公约数。
代码实现:
```c
int gcd(int a, int b) {
while (a != b) {
if (a > b) {
a = a - b;
} else {
b = b - a;
}
}
return a;
}
```
3. 穷举法
穷举法是一种比较暴力的方法,其基本思想是从两个数中较小的数开始,依次枚举所有可能的公约数,找到其中最大的一个。
代码实现:
```c
int gcd(int a, int b) {
int i, max;
max = a < b ? a : b;
for (i = max; i >= 1; i--) {
if (a % i == 0 && b % i == 0) {
return i;
}
}
return 1;
}
```
以上是三种常见的求最大公约数的方法,其中辗转相除法是最常用的一种。
阅读全文