Тема: Ошибки в статье "Линейные диофантовы уравнения с двумя переменными"
Раздел "Получение всех решений".
x = y0 + k * b / g;
Правильно будет
x = x0 + k * b / g;
В разделе "Нахождение количества решений и сами решения в заданном отрезке" код
int a, b, c, g, // коэффициенты диофантова уравнения, и g=gcd(a,b)
x0, y0, // одно из решений диофантова уравнения
x1, x2, // заданный отрезок
mx, my; // искомое решение с наименьшим x >= x1
int cnt = (x1 - x0) / b;
if (x0 + cnt * b < x1)
++cnt;
mx = x0 + cnt * b;
my = y0 - cnt * b;
следует заменить на:
int a, b, c, g, // коэффициенты диофантова уравнения, и g=gcd(a,b)
x0, y0, // одно из решений диофантова уравнения
x1, x2, // заданный отрезок
mx, my; // искомое решение с наименьшим x >= x1
int cnt = (x1 - x0) * g / b;
if (x0 + cnt * b / g < x1)
++cnt;
mx = x0 + cnt * b / g;
my = y0 - cnt * a / g;