您的位置:首页 > 其它

欧几里得算法与扩展欧几里得算法模板

2016-11-07 22:06 232 查看
#include<iostream>
#include<cstdio>
using namespace std;
int a,b,x,y;
int gcd(int a,int b)
{
if(a%b==0)
return b;
return gcd(b,a%b);
}
int ex_gcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;y=0;
return a;
}
int r=ex_gcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
return r;
}
int main()
{
cin>>a>>b;
cout<<gcd(a,b)<<endl;
cout<<ex_gcd(a,b,x,y)<<endl;
cout<<x;//x为a关于%b的乘法逆元
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: