我已经编写了扩展欧几里得算法的以下实现:
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”打印出函数调用的结果时,输出将被打印两次。所以当我这样做
print(extended_euclid(15,10))
我得到了输出
[5, 1, 1]
[5, 1, 1]
我不明白为什么输出要打印两次,请您向我解释一下。 也是当我这样做
a = extended_euclid(15,10)
print(a[1])
我明白了
1
1
我也不明白。
编辑:问题是我错误地两次导入了一个文件,这导致了一些意外的结果。也许这对某人有帮助。
答案 0 :(得分:1)
检查代码的其余部分,如果在某个地方打印了该euclid函数,请删除该打印件,然后仅调用函数。在我的机器上,此代码仅打印一个结果。