Finish euclide algo

This commit is contained in:
flyingscorpio@pinebookpro 2022-01-17 12:45:09 +01:00
parent 317939a471
commit a64106f262

37
algebre-non-lineaire/euclide_etendu.py Normal file → Executable file
View file

@ -7,17 +7,34 @@ Calcule le PGCD de deux nombres et trouve les coefficients de Bezout.
import sys
assert len(sys.argv) == 3
a = int(sys.argv[1])
b = int(sys.argv[2])
print("r u v q")
def main():
assert len(sys.argv) == 3
a = int(sys.argv[1])
b = int(sys.argv[2])
# Initialisation
r = [a, b]
u = [1, 0]
v = [0, 1]
q = [False, a // b]
r = ["r", a, b]
u = ["u", 1, 0]
v = ["v", 0, 1]
q = ["q", "", a // b]
# Séquence
r.append(r[-2] % r[-1])
while True:
r.append(r[-2] % r[-1])
u.append(u[-2] - (q[-1] * u[-1]))
v.append(v[-2] - (q[-1] * v[-1]))
if r[-1] == 0:
q.append("")
break
q.append(r[-2] // r[-1])
print_table(r, u, v, q)
def print_table(r, u, v, q):
"""Représentation de l'algorithme"""
for i in range(len(r)):
print(f"{r[i]:^5} {u[i]:^5} {v[i]:^5} {q[i]:^5}")
if __name__ == "__main__":
main()