扩展欧几里得
扩展欧几里得:
已知整数a、b,扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式 ax+by=gcd(a,b);
#对于给定的一个a,b必然存在x,y使得ax+by=gcd(a,b);
test-code
代码实现:
#include<stdio.h>
int gcd(int a,int b,int &x,int &y){
if (b==0){
x=1,y=0;
return a;
}
int q=gcd(b,a%b,y,x);
y-=a/b*x;
return q;
}
int main(){
int a,b;
int x,y;
scanf("%d%d",&a,&b);
gcd(a,b,x,y);
//输出x y的值
printf("%d %d\n",x,y);
}
扩展欧几里得算法可以用来计算模反元素(也叫模逆元)