Я написал следующую реализацию расширенного евклидова алгоритма:
def extended_euclid(a, b):
x_k = 1 # read x_k
x_k1 = 0 # read x_(k+1)
y_k = 0 # read y_k
y_k1 = 1 # read y_(k+1)
sign = 1
while b != 0:
q = a//b
r = a - q*b
a = b
b = r
xx = x_k1
yy = y_k1
x_k1 = q*x_k1 + x_k
y_k1 = q*y_k1 + y_k
x_k = xx
y_k = yy
sign = -sign
x = sign*x_k
y = sign*y_k
return [a, x, y]
Работает как обычно, но когда я пытаюсь распечатать результат вызова функции, используя стандартную функцию «печать», вывод выводится дважды. Поэтому, когда я делаю
print(extended_euclid(15,10))
Я получаю вывод
[5, 1, 1]
[5, 1, 1]
Я не понимаю, почему вывод печатается дважды, не могли бы вы объяснить это мне.
Также, когда я делаю
a = extended_euclid(15,10)
print(a[1])
Я получаю
1
1
что я тоже не понимаю.
РЕДАКТИРОВАТЬ: проблема заключалась в том, что я по ошибке импортировал файл дважды, что привело к неожиданным результатам. Может быть, это кому-нибудь поможет.