def diviseurs(n): d = [] for i in range(1, n): if n % i == 0: d += [i] return d + [n] # Version 1, classique et sans astuce def pgcd(a , b): if a < b : k = a a = b b = k while a % b != 0: r = a % b a = b b = r return b # Version 2, on exploite les possibilités de python def pgcd(a , b): a, b = max(a, b), min(a, b) while a % b != 0: a, b = b, a % b return b # Version 3, on gère les entiers relatifs et les erreurs def pgcd(a , b): a, b = max(abs(a), abs(b)), min(abs(a), abs(b)) if a != int(a) or b != int(b): return "Il faut saisir des entiers" if a == 0 or b == 0: # Le cas (0,0) n'est pas géré. return max(a,b) while a % b != 0: a, b = b, a % b return b