
\begin{enumerate}
\item Exécutons pas à pas la fonction \texttt{euclide(12,21)}: il y a avant tout un test pour savoir si $a$ ou $b$ est strictement négatif. Ici, ce n'est pas le cas car $a=12$ et $b=21$.

Ensuite, il y a un test pour savoir si $a<b$: c'est en effet le cas, on on exécute l'instruction suivante. $a$ et $b$ sont alors intervertis. Ainsi, $a=21$ et $b=12$.

S'en suit une boucle conditionnelle \og \texttt{while} \fg{} : tant que $b$ est différent de 0, on exécute les instructions suivantes. On peut présenter les résultats successifs dans un tableau:
\begin{center}
\arrayrulecolor{numpagecorrige}
\begin{tabular}{|>{\ttfamily}Sc|*5{Sc|}}
\hline
b != 0 & -  & Vrai              & Vrai             & Vrai & Faux\\\hline
a      & 21 & 12                & 9                & 3    & -\\\hline
b      & 21 & \texttt{21\%12}=9 & \texttt{12\%9}=3 & \texttt{9\%3}=0 & -\\\hline
\end{tabular}
\end{center}

La fonction renvoie la dernière valeur de $a$, c'est-à-dire \og 3 \fg.

\item Sur l'exemple précédent, on reconnaît l'algorithme d'Euclide (d'où le nom de la fonction). Cet algorithme renvoie le \pgcd{a}{b}; c'est la valeur renvoyée par la fonction \texttt{euclide(a,b)}.
\end{enumerate}

