Python中的欧几里德算法

Python中的欧几里德算法,python,python-3.x,algorithm,discrete-mathematics,Python,Python 3.x,Algorithm,Discrete Mathematics,嗨,我想写欧几里德的Alg。在Python中使用a=b*k+r的概念。它在某些情况下起部分作用,但在接近尾声时会出现混乱。有人能帮我找出哪里出错了吗 a=int(输入(“输入第一个数字:”) b=int(输入(“输入第二个数字:”) A=A B=B k=0 r=1 而(a!=(b*b)): 而(a>(b*k)): k=k+1 k=k-1 r=(a-(b*k)) a=b b=r 打印(a,b)#以调试它所处的步骤 打印(“gcd(“,A,”,“,B,”)=”,B) 我已经阅读了您试图执行的操作,但

嗨,我想写欧几里德的Alg。在Python中使用a=b*k+r的概念。它在某些情况下起部分作用,但在接近尾声时会出现混乱。有人能帮我找出哪里出错了吗

a=int(输入(“输入第一个数字:”)
b=int(输入(“输入第二个数字:”)
A=A
B=B
k=0
r=1
而(a!=(b*b)):
而(a>(b*k)):
k=k+1
k=k-1
r=(a-(b*k))
a=b
b=r
打印(a,b)#以调试它所处的步骤
打印(“gcd(“,A,”,“,B,”)=”,B)

我已经阅读了您试图执行的操作,但我强烈建议您重新阅读的定义,以便开始对其进行编码。您试图做的是弄乱
k
的定义,k导致代码以过度扩展的方式循环

编码欧几里德算法的一种简单方法是使用基于除法的实现。只要记住这些代表什么,你就准备好了


学习愉快。

谢谢大家的建议,我能够做出改变并解决问题。 如果有人想要我的解决方案作为参考,我会发布

a = int(input("Enter First Number: "))
b = int(input("Enter Second Number: "))
A = a
B = b

while ((a%b)!=0):  
    K = (a/b)
    k = math.trunc(K)   
    r = (a-(b*k))
    a = b
    b = r
        
print("gcd(",A,",",B,") =",b)

你能提供一个算法应该如何工作的例子吗?(a,b)失败的一些例子?
在接近结尾时出错了
:这不是最好的问题描述。如果
a=b*k
,那么您将找到解决方案,但您的代码仍然会强制执行
a=b*(k-1)+b
其中
b=r
的解决方案。