您的位置:首页 > 其它

扩展欧几里德算法

2016-07-19 09:14 260 查看
#include<iostream>
#include<cstdio>
using namespace std;
void gcd(int a,int b,int& d,int& x,int& y);
int main()
{
int a,b;
while(~scanf("%d%d",&a,&b))
{
int d=0,x=0,y=0;       //d为a,b的最大公约数,x,y分别为ax+by=gcd(a,b)的系数,d,x,y的初始值都赋为0即可
gcd(a,b,d,x,y);
printf("%d %d %d\n",d,x,y);
}
}

void gcd(int a,int b,int& d,int& x,int& y)
{
if(!b){d=a,x=1,y=0;}
else {gcd(b,a%b,d,y,x),y-=x*(a/b);}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: