# Exécuter cette cellule a,b = 525,237 a%b #renvoie le reste de la division euclidienne de a par b # Exécuter cette cellule a,b = 525,237 a,b = b,a%b #permet de remplacer simultanément les valeurs stockées dans a et b respectivement par b et a%b a,b # Ecrire la fonction PGCD def PGCD(a,b): "calcule le PGCD de a et b" while a%b!=0: a,b = b,a%b return b #OU (avec une étape de boucle supplémentaire mais en évitant le double calcul de a%b) def PGCD(a,b): "calcule le PGCD de a et b" while b!=0: a,b = b,a%b return a # Exécuter cette cellule pour vérifier PGCD(525,237) a = 525 b = 237 # Syntaxe pour obtenir le quotient d'une division euclidienne q = a//b q import numpy as np # Syntaxes pour définir une matrice # Chacune des listes intérieures correspond à une ligne de la matrice P = np.array([ [ 0 , 1 ] , [ 1 , -q ] ]) P # Cette matrice correspond à P_0 s,t = P[0] s,t # Ces valeurs correspondent à la première ligne de la matrice P_0 a,b = b,a%b q = a//b # Syntaxe pour multiplier deux matrices P = np.dot( np.array([ [ 0 , 1 ] , [ 1 , -q ] ]) , P ) P # Ecrire la fonction Bezout import numpy as np def Bezout(a,b): #Calcul de P_0 q = a//b P = np.array([ [ 0 , 1 ] , [ 1 , -q ] ]) #même test d'arrêt que pour l'algorithme d'Euclide while a%b!=0: a,b = b,a%b q = a//b P = np.dot( np.array([ [ 0 , 1 ] , [ 1 , -q ] ]) , P ) u,v = P[0] return b,u,v # Exécuter cette cellule pour tester la fonction Bezout(525,237)