c语言欧几里德求最大公约数算法。
时间: 2025-03-09 14:09:02 浏览: 50
### C语言中的欧几里德算法实现
在C语言中,可以通过迭代或递归两种方法来实现欧几里德算法以求解两个正整数的最大公约数。
#### 迭代版本
此版本通过循环不断更新除数和余数直到余数为零为止:
```c
#include <stdio.h>
void fun(int m, int n){
int a = m, b = n, r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
printf("最大公约数: %d\n", a);
}
```
上述代码展示了如何利用`while`循环逐步缩小问题规模直至找到最大公约数[^1]。
#### 递归版本
另一种常见的做法是采用函数自我调用来简化逻辑结构:
```c
#include <stdio.h>
int app(int a, int b) {
if (b == 0) {
return a;
} else {
return app(b, a % b);
}
}
int main() {
int a, b;
printf("请输入两个数字(中间用空格分隔):");
scanf("%d %d", &a, &b);
printf("最大公约数为:%d\n", app(a, b));
return 0;
}
```
这里定义了一个名为`app`的辅助函数用于执行实际运算,并且在遇到基本情况时返回当前参数作为最终结果;对于其他情况,则继续调用自身完成进一步处理[^2]。
无论是哪种方式都能有效地解决问题,在具体应用时可以根据个人喜好或者项目需求选择合适的方法。值得注意的是,当涉及到更复杂的场景比如负数等情况时可能还需要额外考虑边界条件等问题。
阅读全文
相关推荐













