gcd.cpp

来自「数值计算的例子和参考书籍」· C++ 代码 · 共 40 行

CPP
40
字号
#include <stdio.h>

typedef long long LLD;

LLD Gcd(LLD a, LLD b)
{
	return b == 0 ? a : Gcd(b, a % b);
}

void Extended_Gcd(LLD a, LLD b, LLD *x, LLD *y)
{
	LLD X, Y;
	if(b == 0)
	{
		*x = 1;
		*y = 0;
	}
	else
	{
		Extended_Gcd(b, a % b, &X, &Y);
		*x = Y;
		*y = X - a / b * Y;
	}
}

int main(void)
{
	LLD x, y, k, a, n;
	while(scanf("%lld %lld",&a, &n), a != 0 || n != 0)
	{
		Extended_Gcd(a, n, &x, &y);
		if(x < 0)
		{
			x += n;
		}
		printf("%lld\n",x);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?