int niveau = 0;
void afficher1 (...);
void afficher2 (...);
void afficher3 (...);
void afficher4 (...);
long pgcd (long a, long b, long *u, long *v) {
long q, r, d, s, t;
niveau++;
afficher1 (niveau, a, b, u, v, &s, &t);
q = a / b;
r = a % b;
if (r == 0) {
*u = 0;
*v = 1;
afficher2 (niveau, *u, *v);
niveau--;
return b;
}
d = pgcd (b, r, &s, &t);
afficher3 (niveau, d, s, t);
*u = t;
*v = s - q * t;
afficher4 (*u, *v);
niveau--;
return d;
}
void main (void) {
long a, b, d, x, y;
printf ("Entrer deux entiers : ");
scanf ("%ld %ld", &a, &b);
d = pgcd (a, b, &x, &y);
}
|