Pour prouver la correction de l’algorithme, supposons d’abord que l’on est dans le premier cas
a≥0. On introduit l’invariant de boucle :
a=qb +ret r≥0.
Il est vérifié à l’initialisation. De plus, chaque exécution de l’instruction (r := r - b; q := q + 1)
sous la condition de continuation r >= b le conserve. En effet, notant r′,r′′ les états avant et après
de ret q′,q′′ les états avant et après de q, on a : r′′ =r′−bet q′′ =q′+1, donc q′′b+r′′ =
(q′+1)b+ (r′−b) = q′b+r′, d’où la conservation de la condition a=qb +r. D’autre part, r′≥b
(condition d’exécution de la boucle) donc r′′ ≥0.
A la sortie de la boucle tant que, on a r<b(la condition de sortie est la négation de la condi-
tion r >= b) et en plus l’invariant de boucle a=qb +ret r≥0. C’est exactement équivalent aux
conditions énoncées par le théorème : a=qb +ret 0 ≤r≤b−1.
Supposons maintenant que l’on est dans le deuxième cas a≥0. On introduit l’invariant de boucle :
a=qb +ret r<b.
Le raisonnement est alors similaire, on laisse au lecteur le plaisir de le rédiger.
On notera par la suite divEucl(a,b) le résultat de la division euclidienne de apar b, donc les
deux nombres qet rcalculés par l’algorithme ci-dessus.
Corollaire 1.1.2 Le quotient de la division euclidienne de apar best q=⌊a/b⌋.
Preuve. - Puisque ret bsont des entiers, la condition r≤b−1 est équivalente à la condition r<b.
L’entier qest alors défini par la condition :
0≤a−qb ≤b−1⇐⇒ 0≤a−qb <b⇐⇒ qb ≤a<(q+1)b⇐⇒ q≤a/b<(q+1),
d’où la conclusion.
Bien qu’un algorithme ait servi à établir l’existence du quotient et du reste, nous ne préten-
dons pas que les systèmes de calcul existants (comme par exemple Maple) utilisent réellement
cet algorithme pour effectuer une division euclidienne. Dans la suite de ce chapitre, nous élude-
rons cette question et admettrons l’existence d’une “fonction primitive” qui prend en argument le
couple (a,b)et donne comme résultat le couple (q,r); mode d’emploi : (q,r):=diveucl(a,b).
Nous admettrons de plus que ce calcul s’effectue en temps constant.
Exercice 1.1.3 On appelle mantisse de x∈Rle réel M(x):=x− ⌊x⌋.
(i) Montrer que c’est l’unique réel α∈[0,1[tel que x−α∈Z.
(ii) Exprimer le reste de la division euclidienne de apar ben fonction de M(a/b).
TP 1.1.4 Programmer la fonction diveucl en utilisant l’algorithme décrit dans la preuve du théo-
rème.
1.2 Calcul en base b
Dans toute cette section, la base b est un entier naturel fixé tel que b≥2. (Le cas b=1
correspond à l’écriture en bâtons : 1 mammouth = 1 bâton.) Nous ne traiterons que le cas des
entiers naturels : donc, ni les entiers négatifs, ni les nombres non entiers.
5