Documente Academic
Documente Profesional
Documente Cultură
Thomas Dedieu
Dans ces notes je rédige complètement la preuve du théorème de division euclidienne, dans
sa version ci-dessous. Il s’agit de vous donner un modèle duquel vous inspirer pour écrire
correctement des preuves. Si le style vous paraît obscur voire incompréhensible, je vous rappelle
qu’en cours nous tâchons de décrypter pour vous cette langue étrange ; si c’est insuffisant, venez
poser des questions.
1
1.1 – Terminaison de l’algorithme de division euclidienne
Ici, on démontre la terminaison de l’algorithme (1.2). Autrement dit, on démontre l’énoncé
suivant.
Preuve. On distingue les deux cas suivants, pour lesquels les instructions contenues dans l’algo-
rithme sont différentes. Dans les deux cas, on considère la suite (rn )n∈N des valeurs contenues
dans la variable r après n passages dans la boucle tant que, et on démontre qu’après un nombre
fini de passages dans la boucle la condition de passage dans la boucle n’est plus vérifiée.
a) Cas a > 0.
Montrons que la suite (rn )n∈N est strictement décroissante. Soit n ∈ N. Lors d’un passage
dans la boucle tant que (r>=b), la seule opération modifiant la valeur de r est r:=r-b. On a
donc rn+1 = rn − b. Puisque b > 0, ceci implique rn+1 < rn . Ainsi, la suite (rn )n∈N est bien
strictement décroissante.
Montrons que la suite (rn )n∈N est une suite de nombre entiers. On procède par récurrence
sur n ∈ N. Puisque la variable r est initialisée par l’instruction r:=a, on a r0 = a qui est
un entier par hypothèse. Soit n ∈ N, et supposons que rn ∈ Z. On a établi plus haut que
rn+1 = rn − b. Puisque b ∈ Z et rn ∈ Z, on déduit de cette relation que rn+1 ∈ Z. Ainsi, par
récurrence, rn ∈ Z pour tout n ∈ N comme annoncé.
Puisque toute suite strictement décroissante d’entiers tend vers −∞ (Théorème (1.5)), il ex-
iste un entier n0 ∈ N tel que rn0 < b. Ceci implique qu’on peut passer au plus n0 fois dans la
boucle tant que (r>=b). Or une fois sorti de cette boucle, l’algorithme rend un couple (q, r)
et s’arrête. Ceci termine la preuve du lemme dans ce cas.
b) Cas a < 0.
Montrons que la suite (rn )n∈N est strictement croissante. Soit n ∈ N. Lors d’un passage
dans la boucle tant que (r<0), la seule opération modifiant la valeur de r est r:=r+b. On a
donc rn+1 = rn + b. Puisque b > 0, ceci implique rn+1 > rn . Ainsi, la suite (rn )n∈N est bien
strictement croissante.
Montrons que la suite (rn )n∈N est une suite de nombre entiers. On procède par récurrence
sur n ∈ N. Puisque la variable r est initialisée par l’instruction r:=a, on a r0 = a qui est
un entier par hypothèse. Soit n ∈ N, et supposons que rn ∈ Z. On a établi plus haut que
rn+1 = rn + b. Puisque b ∈ Z et rn ∈ Z, on déduit de cette relation que rn+1 ∈ Z. Ainsi, par
récurrence, rn ∈ Z pour tout n ∈ N comme annoncé.
Puisque toute suite strictement croissante d’entiers tend vers +∞ (Théorème (1.5)), il existe
un entier n0 ∈ N tel que rn0 > 0. Ceci implique qu’on peut passer au plus n0 fois dans la
boucle tant que (r<0). Or une fois sorti de cette boucle, l’algorithme rend un couple (q, r) et
s’arrête. Ceci termine la preuve du lemme dans ce cas.
Puisque les cas a) et b) sont les deux seuls cas possible, la terminaison de l’algorithme est
maintenant démontrée. 2
(1.3.1) Remarque. Le lecteur attentif aura remarqué que je n’ai pas démontré dans la preuve
ci-dessus que le q rendu est un entier. On peut le démontrer par récurrence en considérant la
suite (qn ) des valeurs successives prises par la variable q, et en utilisant le fait que qn+1 = qn + 1
dans le cas a) et qn+1 = qn − 1 dans le cas b) ; dans les deux cas, on a q0 = 0 ∈ Z. Je vous
invite à le faire en exercice.
2
1.2 – Correction de l’algorithme de division euclidienne
Ici, on démontre la correction de l’algorithme (1.2). Autrement dit, on démontre l’énoncé
suivant.
On rappelle que puisque r et b sont entiers, les conditions r 6 b−1 et r < b sont équivalentes.
À nouveau, il faut distinguer les deux cas suivants.
(1.4.1) a = bq + r et r > 0.
Nous allons ainsi démontrer par récurrence sur le nombre de passages dans la boucle tant que
(r>=b) que pour tout état e du système consécutif à un passage dans la boucle, on a
(Rappel : a et b sont deux nombres entiers relatifs, et q et r sont des variables, c’est-à-dire des
fonctions de l’état du système).
Soit e0 l’état initial du système. Puisque q et r sont initialisées par les instructions q:=0 et
r:=a, on a q(e0 ) = 0 et r(e0 ) = a. On a donc bien
et cette dernière quantité vaut a par hypothèse de récurrence. D’autre part, on sait que r(e0 ) > b,
car sinon on ne passe pas dans la boucle tant que (r>=b). On en déduit que
3
Nous avons à présent démontré par récurrence que les conditions (1.4.1) sont vraies après
chaque passage dans la boucle. Soit efin l’état final du système. Puisque après efin on ne passe
plus dans la boucle tant que (r>=b), on a nécessairement r(efin ) < b. D’autre part, puisque
(1.4.1) est vrai en efin , on a a = bq(efin ) + r(efin ) et r(efin ) > 0. On a donc bien toutes les
conditions requises (
a = q(efin )b + r(efin ),
0 6 r(efin ) 6 b − 1,
et le lemme est démontré dans le cas a > 0. 2
(1.4.2) a = bq + r et r < b.
Nous allons ainsi démontrer par récurrence sur le nombre de passages dans la boucle tant que
(r<0) que pour tout état e du système consécutif à un passage dans la boucle, on a
Soit e0 l’état initial du système. Puisque q et r sont initialisées par les instructions q:=0 et
r:=a, on a q(e0 ) = 0 et r(e0 ) = a. Puisque a < 0 et b > 0, on a bien
et cette dernière quantité vaut a par hypothèse de récurrence. D’autre part, on sait que r(e0 ) < 0,
car sinon on ne passe pas dans la boucle tant que (r<0). On en déduit que
4
(1.4.2) est vrai en efin , on a a = bq(efin ) + r(efin ) et r(efin ) < b. On a donc bien toutes les
conditions requises (
a = q(efin )b + r(efin ),
0 6 r(efin ) 6 b − 1,
et le lemme est démontré dans le cas b) également. 2
un < A.
Soit (un )n∈N une suite d’entiers strictement croissante, et A un nombre réel. Il existe n0 ∈ N
tel que pour tout entier n > n0 , on a
un > A.
On retiendra que « toute suite strictement croissante d’entiers tend vers +∞ » et « toute
suite strictement décroissante d’entiers tend vers −∞ ».
Preuve. Considérons deux couples (q 0 , r0 ), (q 00 , r00 ) ∈ Z2 tous les deux solutions de (2.1.1). On
va démontrer que
(q 0 , r0 ) = (q 00 , r00 ).
5
On a
r0 − r00 = (a − q 0 b) − (a − q 00 b)
= (q 00 − q 0 )b
0 6 r0 6b−1
et − (b − 1) 6 −r00 6 0,
−(b − 1) 6 r0 − r00 6 b − 1.
Or le seul entier multiple de b compris entre −(b − 1) et b − 1 est 0, donc r0 − r00 = 0, autrement
dit r0 = r00 . D’autre part, on a vu que
(q 00 − q 0 )b = r0 − r00 ,