扩展欧几里德算法(数论)

元气小坏坏 提交于 2019-12-01 10:16:38
根据贝祖定理:如果a、b是整数,那么一定存在整数x、y使得ax+by=gcd(a,b)。扩展欧几里德定理的作用就是不仅求出了最小公倍数,还能求出一组解x,y(x,y可能为负数),使得 ax + by = gcd(a,b)#include<bits/stdc++.h>
#define llinf (0x3f3f3f3f3f3f3f3f)
#define inf (0x3f3f3f3f)
typedef long long i64;
using namespace std;
i64 exgcd(i64 a,i64 b,i64& x,i64& y)
{
    if(b == 0)
    {
        x = 1,y = 0;
        return a;
    }
    i64 r = exgcd(b,a%b,x,y);
    i64 tmp = y;
    y = x - (a/b)*y;
    x = tmp;
    return r;
}
int main()
{
    ios::sync_with_stdio(false);    cin.tie(0),cout.tie(0);
    i64 a,b;
    cin>>a>>b;
    i64 r = exgcd(a,b,x,y);
    cout<<x<<" "<<y<<'\n';
}

  https://blog.csdn.net/destiny1507/article/details/81750874

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!