拓展欧几里得算法exgcd

函数(可求一组解)

int x,y;
int exgcd(int a,int b,int &x,int &y)
{
	if (b == 0)
	{
		x=1;
		y=0;
		return a;
	}
	int res=exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
	return res;
}

求x的最小正整数解

#include<bits/stdc++.h>
using namespace std;
int x,y;
int exgcd(int a,int b,int &x,int &y)
{
	if (b == 0)
	{
		x=1;
		y=0;
		return a;
	}
	int res=exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
	return res;
}
int main()
{
	int a,b;
	cin >> a >> b;
	int g=exgcd(a,b,x,y);
	cout << (x%b+b)%b << endl;
    return 0;
}
posted @ 2026-04-12 15:31  msjing  阅读(17)  评论(0)    收藏  举报