Python 扩展欧几里德算法的实现
为什么下面的实现失败了Python 扩展欧几里德算法的实现,python,algorithm,computer-science,Python,Algorithm,Computer Science,为什么下面的实现失败了 这是中的实现,看起来类似于您的 def egcd(a, b): if a == 0: return (b, 0, 1) else: g, x, y = egcd(b % a, a) return (g, y - (b // a) * x, x) 从报税表中删除{}。 看看d1,x1,y1=extended_euclid(b,a%b),如果将{}保存在return中,您没有足够的值来解包,您可以定义失败吗?我
这是中的实现,看起来类似于您的
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, x, y = egcd(b % a, a)
return (g, y - (b // a) * x, x)
从报税表中删除{}
。
看看
d1,x1,y1=extended_euclid(b,a%b)
,如果将{}
保存在return
中,您没有足够的值来解包,您可以定义失败吗?我得到了错误的结果。您是否尝试使用调试器来找出哪里出了问题?是否有返回集合的原因?你意识到这是一种无序的数据类型,对吗?@ChrisMueller,谢谢!你可以把它写下来作为答案,这样我就可以批准它了!谢谢瓦茨拉夫·斯特鲁哈尔!很高兴它有帮助:)你介意把这个答案标记为解决方案吗?谢谢@奥利弗
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, x, y = egcd(b % a, a)
return (g, y - (b // a) * x, x)
def extended_euclid(a,b):
if b == 0:
return a, 1, 0
d1,x1,y1 = extended_euclid(b, a % b)
d = d1
x = y1
y = x1 - math.floor(a/b) * y1
return d, x, y