E597 – Zéro obligé [***** à la main]
On écrit trois entiers strictement positifs et on répète autant de fois que nécessaire l’opération suivante : on choisit deux entiers x et y parmi les trois avec x ≤ y et on les remplace par 2x et y ‒ x.
Démontrer qu’il est toujours possible d’obtenir l’entier 0 en un nombre fini d’opérations.
Application numérique : décrire les opérations permettant d’obtenir l’entier 0 à partir de l’ensemble {47,161,197}
Solution proposée par Daniel Collignon
Supposons x=<y=<z.
En cas d'égalité d'au moins deux des trois termes, par exemple x=y, alors (x,x,z) -> (2x,x-x,z) et 0 est atteint.
Supposons désormais x<y<z.
Soit y=qx+r la division euclidienne de y par x, avec 0=<r<x.
Comme q>=1, il existe un entier k>=1 tel que 2^(k-1) =< q < 2^k : convertissons alors q en binaire (il s'écrit avec k chiffres), lisons l'écriture de droite à gauche et appliquons l'algorithme suivant :
- lorsqu'on lit un chiffre 1, on applique la transformation (x,y,z) -> (2x,y-x,z) - lorsqu'on lit un chiffre 0, on applique la transformation (x,y,z) -> (2x,y,z-x)
A l'issue de la lecture des k chiffres, nous aurons alors le triplet (2^k*x,y-qx,z-(2^k-1-q)x), la somme des 3 composantes restant constante et valant x+y+z.
En particulier comme y-qx = r < x, nous nous ramenons au même problème, mais avec un triplet réordonné (x',y',z') tel que x'<x.
Le minimum des trois ne pouvant indéfiniment décroître, ainsi en itérant en un nombre fini d'étapes, nous obtiendrons donc 0.
Application numérique : (47,161,197)
q=[161/47]=3, soit 11 en binaire
(47,161,197) -> (94,114,197) -> (188,20,197)
(20,188,197)
q=[188/20]=9, soit 1001 en binaire
(20,188,197) -> (40,168,197) -> (80,168,157) -> (160,168,77) -> (320,8,77)
(8,77,320)
q=[77/8]=9, soit 1001 en binaire
(8,77,320) -> (16,69,320) -> (32,69,304) -> (64,69,272) -> (128,5,272)
(5,128,272)
q=[128/5]=25, soit 11001 en binaire
(5,128,272) -> (10,123,272) -> (20,123,262) -> (40,123,242) -> (80,83,242) -> (160,3,242)
(3,160,242)
q=[160/3]=53, soit 110101 en binaire
(3,160,242) -> (6,157,242) -> (12,157,236) -> (24,145,236) -> (48,145,212) -> (96,97,212) -> (192,1,212)
(1,192,212)
q=[192/1]=192, soit 11000000 en binaire
(1,192,212) -> (2,192,211) -> (4,192,209) -> (8,192,205) -> (16,192,197) -> (32,192,181) -> (64,192,149) -
> (128,128,149) -> (256,0,149)