简介:
扩展欧几里德算法,是重写欧几里德算法以计算出额外有用信息的一种形式。算法用于计算满足下列条件的整系数x与y:
d = gcd(a , b) = ax + by
实现:
根据GCD递归定理,我们有:gcd(a , b) = gcd(b , a%b),我们将使用该定理来推导扩展欧几里德算法:
gcd(a , b) = ax + by
gcd(b , a%b) = bX + (a%b)Y
ax + by = bX + (a%b)Y
ax + by = bX + (a - (a/b)*b)Y
ax + by = aY + b(X - (a/b)*Y)
所以有:x = Y , y = X - (a/b)*Y
代码:
int extend_gcd(int a,int b,int &x,int &y){
if(b==0){
x=1,y=0;
return a;
}
int r=extend_gcd(b,a%b,y,x);
y-=a/b*x;
return r;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-11 12:43:17