• Aucun résultat trouvé

Exercice : Algorithme de Kaprekar.On considère un nombre de trois chiffres : abcabc

N/A
N/A
Protected

Academic year: 2021

Partager "Exercice : Algorithme de Kaprekar.On considère un nombre de trois chiffres : abcabc"

Copied!
2
0
0

Texte intégral

(1)

Exercice : Algorithme de Kaprekar.

On considère un nombre de trois chiffres : abc100a10b c et on effectue la manipulation suivante :

- on ordonne les trois chiffres dans l'ordre décroissant pour obtenir un entier n - on ordonne les trois chiffres dans l'ordre croissant pour obtenir un entier m

- on effectue la soustraction n-m : on obtient ainsi un nouveau nombre de trois chiffres (au plus)

L'algorithme de Kaprekar consiste à répéter cette manipulation jusqu'à obtention de deux résultats consécutifs égaux.

Par exemple, si l'on considère : n = 473 alors on effectue : Nombre Nombre obtenu après

classement des chiffres dans l'ordre décroissant

Nombre obtenu après classement des chiffres

dans l'ordre croissant

Soustraction

abc = 473 n = 743 m = 347 n - m =396

abc = 396 n = 963 m = 369 n - m = 594

abc = 594 n = 954 m = 459 n - m = 495

abc = 495 n = 954 m = 459 n - m = 495

On montre que quel que soit le nombre choisi initialement, la suite des nombres obtenus est stationnaire à partir d'un certain nombre d'itérations. On souhaite écrire un programme qui effectue cette suite d'opérations jusqu'à l'obtention de deux nombres consécutifs identiques.

1) Ecrire une fonction [n]=saisir qui permet de saisir au clavier un nombre entre 100 et 999.

2) Ecrire une fonction [a,b,c]=decomposer(n) qui , pour un entier en paramètre d'entrée n, détermine son chiffre des centaines, son chiffre des dizaines, et son chiffre des unités et affecte ces chiffres aux variables globales entières a, b, c.

3) Ecrire une procédure [a,b,c]=tri_decroissant(a,b,c) qui modifie les contenus de trois variables a, b, c afin de retourner a  b  c.

4) Ecrire un programme principal : - demandant l'entier n.

- affiche à l'écran la suite des nombres abc jusqu'à obtention de deux nombres consécutifs égaux.

(2)

function [n]=saisir

n=input('entrez un entier à trois chiffres');

while (n<100)|(n>999) do n=input('entrez un entier à trois chiffres'); end function [a,b,c]=decomposer(n)

c=modulo(n,10) b=modulo((n-c)/10,10) a=(n-10*b-c)/100

function [a,b,c]=tri_decroissant(a,b,c) if (a>c)&(c>b) then d=b;b=c;c=d; end if (b>c)&(c>a) then d=a;a=b;b=c;c=d; end if (b>a)&(a>c) then d=a;a=b;b=d; end if (c>a)&(a>b) then d=a;a=c;c=b;b=d; end if (c>b)&(b>a) then d=a;a=c;c=d; end

n=saisir()

[a,b,c]=decomposer(n) [a,b,c]=tri_decroissant(a,b,c) n=100*a+10*b+c;

s=c*100+b*10+a;

r=n-s;

[a,b,c]=decomposer(r) [a,b,c]=tri_decroissant(a,b,c) n=100*a+10*b+c;

while n<>r do n=100*a+10*b+c;

s=c*100+b*10+a;

r=n-s;

[a,b,c]=decomposer(r) [a,b,c]=tri_decroissant(a,b,c) r=100*a+10*b+c;

end n-s

getf('C:\Mes documents\…\kaprekar_f.txt);

exec('C\Mes documents\…\kaprekar.txt);

Références

Documents relatifs

Combien de moutons blancs y- a-t-il dans ce troupeau.. 23

Pour écrire un nombre décimal, j’écris d’abord la partie entière puis la partie décimale séparée d’une virgule. Je réfléchis à la valeur de

Pour écrire un nombre décimal, j’écris d’abord la partie entière puis la partie décimale séparée d’une virgule. Je réfléchis à la valeur de

le chiffre des centaines le nombre des centaines. le chiffre des dizaines le nombre

b) Déterminer le chiffre des unités du nombre 3. Dans le plan P on considère un carré ABCD tel que AC=BD=a avec a&gt;0. a) Vérifier que le centre du carré ABCD appartient à (

Un entier n est appelé réversible s'il est un multiple k de l'entier m obtenu en lisant n de droite à gauche.Comme on écarte toute écriture non standard des entiers m et n

Le chiffre des unités est un zéro et ils sont de plus en plus grands jusqu’au chiffre des dizaines de mille.. On obtient les autres en ajoutant un

Sans poser d’opérations, mais en justifiant, pouvez- vous me dire de combien d’albums a besoin Toto pour ranger toutes ses images.. CM1