Как реализовать НОД трех чисел с помощью метода Стейна? Очень слаб в арифметике. Нашел пример для двух чисел, не могу разобраться
if (a == b)
{
return a;
}
if (a == 0)
{
return b;
}
if (b == 0)
{
return a;
}
if ((~a & 1) != 0)
{
if ((b & 1) != 0)
{
return GetGcdByStein(a >> 1, b);
}
else
{
return GetGcdByStein(a >> 1, b >> 1) << 1;
}
}
if ((~b & 1) != 0)
{
return GetGcdByStein(a, b >> 1);
}
if (a > b)
{
return GetGcdByStein((a - b) >> 1, b);
}
return GetGcdByStein((b - a) >> 1, a);