扩展欧几里得
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扩展欧几里得相关的知识,希望对你有一定的参考价值。
1 /************************************* 2 3 扩展欧几里得模板 4 给出ax+by=gcd(a,b)求gcd(a,b),x,y。 5 gcd(a,b)为a,b的最大公约数。 6 7 *************************************/ 8 9 #include<iostream> 10 using namespace std; 11 12 ///扩展gcd,可以求出gcd(a,b)以及ax+by=gcd(a,b)中x,y的值 13 int extendGcd(int a,int b,int &x,int &y) 14 { 15 if(b==0) 16 { 17 x=1; 18 y=0; 19 return a; 20 } 21 int d= extendGcd(b,a%b,x,y); 22 int tmp=x; 23 x=y; 24 y=tmp-a/b*y; 25 return d; 26 } 27 28 int main() 29 { 30 int a,b,x,y; 31 while (cin>>a>>b) 32 { 33 cout<<extendGcd(a,b,x,y)<<endl; 34 cout<<x<<" "<<y<<endl; 35 } 36 }
以上是关于扩展欧几里得的主要内容,如果未能解决你的问题,请参考以下文章