0

这是我在网上找到的当前扩展欧几里得算法:

def euclideEtendu(bNombre, aModulo):
    """ Algorithme d'Euclide étendu, permettant de connaître:
        PGCD
        Coefficients de Bézout (u, v)
        Inverse modulaire de B modulo A ---> B * B^-1 mod A = 1 
        """
    modulo = aModulo
    
    x = 0
    y = 1
    u = 1
    v = 0
    
    while bNombre != 0:
        q = aModulo // bNombre
        r = aModulo % bNombre
        
        m = x - u * q
        n = y - v * q
        
        aModulo = bNombre
        bNombre = r
        x = u
        y = v
        u = m
        v = n
    
    ' retourne (pgcd, u, v, inverse modulaire '
    return (aModulo, x, y, x % modulo)

这是一个例子:

>>> euclideEtendu(17, 13)
(1, -3, 4, 10)

这是我希望它返回的内容:

>>> euclideEtendu(17, 13)
1 = 13 - 3 * 4
1 = 13 - 3 * (17 - 1 * 13)
1 = 4 * 13 - 3 * 17

17x + 13y = 1
17 * -3 + 13 * 4 = 1

所以添加所有的“步骤”。

提前致谢。

4

0 回答 0