L’algorithme de Syracuse
1. Voici un petit programme écrit pour une calculatrice CASIO :
‘’ N= ‘’ : ? N
N-2*Int(N/2) R
If R = 0
Then N/2 Y
Else 3*N + 1Y
IfEnd
‘’Y =’’
Y
a. Tester ce programme pour quelques valeurs affectées à N (on prendra des entiers
naturels). Que semble-t-on obtenir en sortie de ce programme ?
b. Quel nombre est placé dans la variable R ? (ligne 2)
Aide : Int(X) désigne la partie entière d’un nombre réel X. Si X est un nombre réel positif
ou nul écrit sous forme décimale, Int(X) est égal à l’entier placé avant la virgule. Par
exemple : Int(2,78) = 2 ; Int((0,333) = 0 …
Donner Int(124,376), Int(π) , Int(√2).
c. Ecrire un algorithme en langage naturel associé à ce programme.
2. L’algorithme de Syracuse.
a. Considérons l’algorithme suivant :
Entrée
Saisir n : entier naturel non nul.
Traitement
Tant que n ≠1
Si n est pair alors
n prend la valeur n/2
sinon
n prend la valeur 3n + 1
FinSi
Sortie
Afficher n
FinTantque
b. Les nombres calculés à partir de n avec cet algorithme, forment la suite de Syracuse de n.
Vérifier que pour n = 6, cet algorithme donne la suite 6 ; 3 ; 10 ; 5 ; 16 ; 8 ; 4 ; 2 ; 1.
Quelle suite obtient-on à partir de n = 34 ? n = 75 ?
c. Ecrire un programme associé à cet algorithme et le faire fonctionner avec quelques
valeurs de n (Eviter 27, prendre plutôt 26 ou 20 !). Quelle conjecture peut-on énoncer ?
d. Un peu d’info : La conjecture établie s’appelle la conjecture de Syracuse (Université
américaine près de New York, rien à voir avec le port de Sicile !), l’une des plus célèbres
conjectures mathématiques : Il semble que pour tout entier naturel non nul choisi, la
répétition de ce programme de calcul conduit à 1 après un nombre fini d’étapes.
Elle n’a, à ce jour, jamais été démontrée …….