C++ 程序实现扩展欧几里得算法
c++server side programmingprogramming
扩展欧几里得算法只是计算两个数字的 GCD 的另一种方法。它有额外的变量来计算 ax + by = gcd(a, b)。在计算机程序中使用效率更高
算法
开始 声明变量 a、b、x 和 y gcdExtended(int a, int b, int *x, int *y) if (a == 0) *x = 0; *y = 1; 返回 b; 取两个变量来存储结果 使用递归调用的结果更新 x 和 y 结束
示例代码
#include <bits/stdc++.h> using namespace std; int gcdExtended(int a, int b, int *x, int *y) { if (a == 0) { *x = 0; *y = 1; return b; } int x1, y1; int gcd = gcdExtended(b%a, a, &x1, &y1); *x = y1 - (b/a) * x1; *y = x1; return gcd; } int main() { int x, y; int a = 35, b = 15; cout<<"gcd "<<gcdExtended(a, b, &x, &y); return 0; }
输出
gcd 5