Диофантовый анализ в максимумах

Я определил расширенный евклидов алгоритм в Maxima как

ext_euclid(a,b):=block(
                   [x,y,d,x_old,y_old,d_old],
                    if b = 0 then return([1,0,a])
                             else ([x_old,y_old,d_old]:ext_euclid(b,mod(a,b)),
                                  [x,y,d]:[y_old,x_old-quotient(a,b)*y_old,d_old],
                                  return([x,y,d])));

чтобы решить линейные диофантовы уравнения вида a+b=c, где gcd(a,b)=1, однако, если ab = c, я получаю -1, возвращаемый алгоритмом для делителя, но gcd(a,-b) как до. Мой алгоритм неверен или его можно использовать для ab = c?

Iain

1 ответ

Я не совсем понимаю, в чем проблема. Можете ли вы привести два примера: один, в котором результат соответствует ожидаемому, а другой - нет (и, пожалуйста, скажите, каков ваш ожидаемый результат в этом случае).

РЕДАКТИРОВАТЬ: OP отвечает: "для решения 5x+7y это 23 ext_euclid (5,7) возвращает [3,-2,1], где gcd (5,7) равен 1, но для 5x-7y равен 23 ext_euclid(5,-7) возвращает [-3,1,-1], но gcd (5, -7) по-прежнему равен 1, это не соответствует идентичности топора Безу + по gcd (a, b)"

Также, если вы пытаетесь реализовать конкретную формулировку алгоритма, можете ли вы дать ссылку на нее или скопировать ее здесь.

ОП отвечает: "код на http://mvngu.wordpress.com/2009/08/25/elementary-number-theory-using-maxima/"

Одна возможная вещь, чтобы посмотреть на: mod Функция ведет себя так, как вы ожидаете?

ОП отвечает: "мод (5,7), мод (5, -7) -2"

Другие вопросы по тегам