# -*- coding:utf-8 -*- __projet__ = "CoursS5" __nom_fichier__ = "22_pgcd" __author__ = "A-J. Tinet" __date__ = "octobre 2022" """ ======================================================================================================================== Ex. 22 RECHERCHE DU PGCD DE DEUX ENTIERS NATURELS ======================================================================================================================== """ # Définition de fonctions def calcul_pgcd(a, b): """ @param a: Nombre entier @param b: Nombre entier @return: PGCD (plus grand commun diviseur) de a et b """ # On prend des valeurs positives a, b = abs(a), abs(b) # Cas impossible if a == 0 or b == 0: return max(a,b) while a != b: if a > b: a = a-b else: b = b-a return a def calcul_pgcd_euclide(a, b): """ @param a: Nombre entier @param b: Nombre entier @return: PGCD (plus grand commun diviseur) de a et b """ # On prend des valeurs positives a, b = abs(a), abs(b) # Cas impossible if b == 0: return a r = a%b while r > 0: a, b = b, r r = a%b return b # Programme principal if __name__ == '__main__': # Cas avec des 0 print(calcul_pgcd(0, 5), calcul_pgcd_euclide(0,5)) print(calcul_pgcd(5,0), calcul_pgcd_euclide(5,0)) # Exemples print(calcul_pgcd(12,8), calcul_pgcd_euclide(12,8)) # 4 print(calcul_pgcd(8,12), calcul_pgcd_euclide(8,12)) # 4 print(calcul_pgcd(-12,8), calcul_pgcd_euclide(-12,8)) # 4 print(calcul_pgcd(73,12),calcul_pgcd_euclide(73,12)) # 1