簡體   English   中英

實現擴展歐幾里得算法

[英]Implementing Extended Euclid Algorithm

為什么擴展Euclid算法的以下實現失敗?

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} 
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

從您的退貨中刪除{} 看一下d1,x1,y1 = extended_euclid(b, a % b) ,如果保留{}作為return值,則沒有足夠的值可用於解包。

這是在https://en.wikibooks.org/wiki/Algorithm_Implementation/Mathematics/Extended_Euclidean_algorithm中找到的實現,與您的實現相似。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM