/*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 est le PGDC, sinon il devient le plus grand entier, l'opération est alors répétée. Evite la récursivité du code */ unsigned int gcd(unsigned int int1, unsigned int int2) { unsigned int temp; /* Bascule si nécessaire pour que int1 >= int2 */ if (int1 < int2) { temp = int1; int1 = int2; int2 = temp; } /*Faisons un tour de boucle, en divisant int1 par int2 puis en testant le reste jusqu'à ce reste soit égal à 0.A chaque tour de boucle, si le reste n'est pas égal à 0, nous allouons int2 à int1, et le reste à int2, puis nous répétons l'opération */ for (;;) { /* Si le reste de int1 divisé par int2 est égal à 0, int2 est alors le PGDC */ if ((temp = int1 % int2) == 0) { return(int2); } /* int2 est le plus grand entier et le reste le plus petit, et l'opération se répète */ int1 = int2; int2 = temp; } }