et 1029 est 21. ´
Ecrire un algorithme r´ecursif calculant le PGCD de deux entiers,
en s’inspirant de l’algorithme it´eratif donn´e en cours.
Correction 2 On consid`ere a > b. Il faut d´emontrer que tout nombre qui divise
aet bdivise aussi le reste de la division de apar b, ce qui se voit facilement
avec a = bq + r. R´eciproquement, tout nombre qui divise bet rdivise ausi a.
Donc pgcd(a, b) = pgcd(b, r).
int pgcd(int a, int b)
{
if (b == 0) { return a; }
else { return pgcd(b, a % b); }
}
2 Figure de Sierpi´nski
La figure de Sierpi´nski est une figure g´eom´etrique d’aire nulle et de p´erim`etre infini.
Elle se construit, `a partir d’un triangle ´equilat´eral, par subdivisions successives. On la
d´efinit de la fa¸con suivante :
– La figure de Sierpi´nski d’ordre 1 est un triangle ´equilat´eral noir,
– La figure de Sierpi´nski d’ordre nest obtenue `a partir de celle d’ordre n−1 en
inscrivant un triangle ´equilat´eral blanc `a l’int´erieur de tous les triangles noirs,
formant ainsi trois nouveaux triangles noirs `a l’int´erieur de chacun de ces tri-
angles.
Voici par exemple les figures de Sierpi´nski d’ordre 1, 2, 3, 4 et 5 :
1. ´
Ecrire un algorithme r´ecursif dessinant la figure de Sierpi´nski d’ordre ndont le
sommet du sud-ouest du triangle a pour coordonn´ees (x, y) et dont la longueur
du cot´e est a:
void sierpinski(x, y, a, n)
On utilisera pour cela la fonction
tracer_ligne(x, y, a, b)
qui trace un segment entre les points de coordonn´ees (x, y) et (a, b). On remar-
quera aussi que la figure de Sierpi´nski d’ordre n > 1 est form´ee de trois figures
plus petites d’ordre n−1.
2