1
Yves Coudert
ENONCE : L’algorithme de Kaprekar pour un nombre à 4 chiffres
(Niveau Lycée)
L’algorithme de Kaprekar pour un nombre à 4 chiffres consiste à itérer le processus suivant :
Soit un nombre à quatre chiffres non tous égaux .
Calculer la différence du nombre constitué des 4 chiffres rangés dans l’ordre décroissant et du
nombre composé des quatre chiffres rangés dans l’ordre croissant.
Le mathématicien indien Dattatreya Damachandra Kaprekar (1905 - 1988) a démontré que cet
algorithme aboutissait toujours au même nombre.
Vérifier cette conclusion en écrivant un programme réalisant l’algorithme.
En déduire le nombre auquel aboutit l’algorithme et émettre une conjecture.
Correction avec la calculatrice Graph 75+E
Nous proposons ici une correction avec la calculatrice Graph 75 + qui est également applicable pour les
modèles Graph 35+E (programme uniquement) et fx CG-20.
Avant de passer à la programmation, nous allons écrire l’algorithme détaillé.
Le nombre de départ N sera saisi par l’opérateur.
On supposera qu’il est constitué de 4 chiffres non tous égaux A, B, C et D.
On désigne par E(x) la partie entière d’un nombre réel x.
On va utiliser une boucle Tant Que, en gardant en mémoire à l’aide de la variable M la dernière valeur de N
puis on détermine les chiffres A, B, C et D constituant N à l’aide da la fonction partie entière.
Si on note EFGH l’écriture du nombre constitué de 4 chiffres dans l’ordre décroissant, alors E correspond
au maximum des quatre chiffres obtenus et H au minimum.
On va faire 3 tests successifs pour savoir quel chiffre A, B, C ou D correspond au maximum E.
F va prendre alors la valeur du maximum des 3 chiffres restants et G s’obtient en additionnant ces 3 chiffres
et en soustrayant F et H.
On termine la boucle en affectant à N le nombre EFGH – HGFE à l’aide de la formule :
999 (E-H)+90(F-G)
On va également afficher la valeur de N pour voir l’évolution du nombre à chaque itération.
2
Algorithme de Kaprekar pour un nombre à 4 chiffres distincts.
Variables :
A, B, C, D, E, F, G, H, M, N entiers
Début
Saisir le nombre N
M prend la valeur N+1
Tant Que N M
M prend la valeur N
A prend la valeur E(N/1000)
B prend la valeur E((N – A1000)/100)
C prend la valeur E((N-A1000 – B100)/10)
D prend la valeur N-A1000 – B100-C10
E prend la valeur maximum (A, B, C, D)
H prend la valeur minimum (A, B, C, D)
Si A=E alors
F prend la valeur maximum (B , C, D)
G prend la valeur B+C+D-F-H
Sinon
Si B=E alors
F prend la valeur maximum (A, C, D)
G prend la valeur A+C+D-F-H
Sinon
Si C=E alors
F prend la valeur maximum (A, B, D)
G prend la valeur A+B+D-F-H
Sinon
F prend la valeur maximum (A, B, C)
G prend la valeur A+B+C-F-H
FinSi
FinSi
FinSi
N prend la valeur 999 (E-H)+90 (F-G)
Afficher N
Fin Tant Que
Fin
Explication de la formule : 999 (E-H)+90(F-G)
                             
                           
Pour programmer l’algorithme avec la calculatrice on va utiliser le menu
3
Sélectionner
puis se déplacer à l’aide du bouton directionnel sur l’icône puis faire

Pour entrer un nouveau programme sélectionner
(NEW) puis taper le nom du programme suivi de
On va rentrer le programme suivant :
"N="?N
N+1M
While NM
NM
Intg (N÷1000)A
Intg ((N-A×1000)÷100)B
Intg ((N-A×1000-B×100)÷10)C
N-A×1000-B×100-C×10D
Max({A,B,C,D})E
Min({A,B,C,D})H
If A=E
Then
Max({B,C,D})F
B+C+D-F-HG
Else
If B=E
Then
Max({A,C,D})F
A+C+D-F-HG
Else
If C=E
Then
Max({A,B,D})F
A+B+D-F-HG
Else
Max({A,B,C})F
A+B+C-F-HG
IfEnd
IfEnd
IfEnd
999×(E-H)+90×(F-G)N
N
WhileEnd
4
Les touches du clavier de la Graph75+E qu’il faut rentrer successivement sont les suivantes :






































5
Pour lancer le programme faire

puis
(EXE) et rentrer un nombre à 4 chiffres non
tous égaux suivi de

A chaque fois que l’on sélectionne

le programme affiche une nouvelle valeur et – Disp - jusqu’à ce
que M=N (la valeur calculée par la boucle reste inchangée) et alors on sort de la boucle while.
On voit dans cet exemple que l’on sort de la boucle pour la valeur de N = 6174.
On constate que quelque soit le nombre entier à 4 chiffres, non tous égaux, rentré on obtient toujours à la
fin du programme le nombre 6174.
Donc on peut conjecturer que l’algorithme aboutit toujours au même nombre 6174.
Pour démontrer ce résultat, il suffit de s’intéresser à l’expression : 999 (E-H) + 90 (F-G)
E-H ne peut prendre que des valeurs comprises entre 1 et 9 car les chiffres ne sont pas tous égaux.
F-G peut prendre des valeurs comprises entre 0 et 9.
Il suffit donc de déterminer les résultats obtenus par le programme pour au plus     couples de
valeurs pour E-H et F-G . Sachant qu’il faut éliminer les couples (i ; j) où   car E-H F-G , il y a
donc exactement 54 couples à tester (
 !
"
 # avec ici #  ).
On va lister tous les nombres possibles et constater avec le programme que l’on obtient dans tous les cas,
après au plus 6 itérations, le nombre 6174. Ceci prouve le résultat puisqu’après une itération d’un nombre
on a toujours un nombre de la forme   $    % avec  &  &  et et  &  &  .
Par exemple le couple (3 ; 1) correspond au nombre :  ' (   '  ()* qui a été obtenu au
premier calcul pour le chiffre 4567. La prochaine itération va donner le nombre 8352 et ensuite on va
trouver le nombre 6174. Il y a donc ici 2 itérations à partir du nombre 3087 pour obtenir 6174.
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !