/* Trouve et retourne le plus grand diviseur commun de deux entiers. Utilise l'algorithme d'Euclide : divise le plus grand entier par le plus petit; si le reste est égal à 0, le plus petit entier est le PGDC, autrement le plus petit entier devient le plus grand, et le reste devient le plus petit entier, l'opération est alors répétée. */ static unsigned int gcd_recurs(unsigned int, unsigned int); unsigned int gcd(unsigned int int1, unsigned int int2) { unsigned int temp; /*Si les deux entiers sont égaux, nous avons trouvé le PGDC*/ if (int1 == int2) { return(int1); } /* Bascule si nécessaire pour que int1 >= int2 */ if (int1 < int2) { temp = int1; int1 = int2; int2 = temp; } /* Appel récursif de la fonction, qui suppose que le premier paramètre est le plus grand des deux */ return(gcd_recurs(int1, int2)); } static unsigned int gcd_recurs(unsigned int larger_int, unsigned int smaller_int) { int temp; /* Si le reste de larger_int divisé par smaller_int est égal à 0, alors smaller_int est le PGDC */ if ((temp = larger_int % smaller_int) == 0) { return(smaller_int); } /* smaller_int est le plus grand entier et le reste le plus petit, et appelle cette fonction en récursivité pour continuer l'opération */ return(gcd_recurs(smaller_int, temp)); }