Я искал алгоритм Extended Euclidean
в C
. Я нашел следующий кусок кода:
int gcdExtended(int a, int b, int *x, int *y)
{
if (a == 0)
{
*x = 0;
*y = 1;
return b;
}
int x1, y1;
int gcd = gcdExtended(b%a, a, &x1, &y1);
*x = y1 - (b/a) * x1;
*y = x1;
return gcd;
}
поэтому для gcdExtended(0,0)
он вернет: x=0
и y=1
. Но я видел некоторые другие версии алгоритма, которые возвращают x=0
и y=0
. Оба математически верны. Но есть ли соглашение по этому вопросу?