![]() | Recherche d'un couple d'entiers (x,y) solution de ax+by=c | ![]() | pour copier ce programme : faites apparaître un bandeau d'icônes en passant la souris sur le texte |
# Ce programme fournit une solution particulière de l'équation Diophantienne du programme de la spécialité de TS
a, b, c = demande ("Résolution de ax + by = c dans N.\n Entrez les valeurs entières de a, b et c séparées par une virgule.")
# placer un \n dans le texte crée un retour à la ligne dans le prompteur
d = pgcd (a, b)
if reste (c, d) > 0 :
print ("Aucune solution, car", d, " divise", a, "et", b,end="")
print ("mais ne divise pas", c)
else :
# Initialisations, on laisse invariants p * a0 + q * b0 = a et r * a0 + s * b0 = b.
a0, b0, c0 = a/d, b/d, c/d
p, q, r, s = 1, 0, 0, 1
while b != 0 :
res = reste (a, b) # Ordonner a et b est inutile : la boucle s'en charge.
quot = quotient (a, b)
a, b = b, res
p, q, r, s = r, s, p - quot * r, q - quot * s
print ((p * c0), "*", (a0 * d), "+ (", (q * c0), ") *", (b0 * d), "=", d * c0)