趣味整数最大公约数C语言代码
时间: 2025-01-30 15:09:51 浏览: 36
### 创新的 C 语言 GCD 实现
#### 使用二进制算法(Stein算法)
一种高效的GCD计算方法是利用Stein算法,该算法基于一些简单的性质来减少运算次数。这种方法特别适合于计算机实现,因为它主要依赖位操作而不是除法。
```c
#include <stdio.h>
#include <stdlib.h>
// Stein's algorithm to find gcd of two numbers
int gcd(int a, int b) {
if (a == 0 || b == 0)
return a | b;
// Find the greatest power of 2 that divides both a and b.
unsigned k;
for (k = 0; ((a | b) & 1) == 0; ++k) {
a >>= 1;
b >>= 1;
}
while (((a ^ b) & 1) == 0) { // While a and b are even
a >>= 1;
}
do {
while (!(a & 1)) // Reduce larger argument whenever it is even
a >>= 1;
while (!(b & 1))
b >>= 1;
if (a > b)
a = (a - b) >> 1;
else
b = (b - a) >> 1;
} while (a != b);
return a << k;
}
int main() {
printf("GCD(98, 63): %d\n", gcd(98, 63));
}
```
此程序实现了Stein算法用于求解两个正整数的最大公约数[^2]。通过移位操作代替传统的模运算,提高了效率并减少了CPU指令的数量。
阅读全文
相关推荐

















