用c语言编程实现扩展的欧几里得算法
时间: 2024-09-25 11:08:56 浏览: 95
c代码-C语言最大公约数
扩展的欧几里得算法是一种用于求取两个整数最大公约数(GCD)的算法,同时还可以求出这两个数的余数。下面是一个使用C语言实现扩展的欧几里得算法的示例代码:
```c
#include <stdio.h>
int extended_gcd(int a, int b) {
if (b == 0) {
return a;
}
int temp = extended_gcd(b, a % b);
return (temp * (-1)) + b;
}
int main() {
int a = 48, b = 18;
int gcd = extended_gcd(a, b);
printf("最大公约数为:%d\n", gcd);
printf("a除以b的余数为:%d\n", a % b);
return 0;
}
```
上述代码中,`extended_gcd`函数是扩展的欧几里得算法的实现,其递归地调用自身来求解最大公约数和余数。当第二个参数为0时,直接返回第一个参数作为最大公约数;否则,将第二个参数和第一个参数对第二个参数取模的结果作为第二个参数传入递归调用,并返回新得到的结果乘以-1加上原来的余数作为最大公约数。
在主函数中,我们使用`extended_gcd`函数来求解两个整数`a`和`b`的最大公约数,并输出结果。其中,输出的结果中包含两个部分:一个是最大公约数,另一个是`a`除以`b`的余数。由于使用扩展的欧几里得算法时已经同时求出了这两个部分,所以输出的结果可以清楚地反映出扩展的欧几里得算法的功能。
以上是一个简单的C语言实现扩展的欧几里得算法的示例代码,根据具体的需求可以进行适当的修改和优化。
阅读全文