AlgoBox : syracuse_graphe

La suite de Syracuse sur Math93.com

On rappelle que la suite de Syracuse est définie ainsi :
On part d'un nombre entier plus grand que zéro ; s’il est pair, on le divise par 2 ; s’il est impair, on le multiplie par 3 et on ajoute 1.
En répétant l’opération, on obtient une suite d'entiers positifs dont chacun ne dépend que de son prédécesseur.

Avec l'algorithme présent :
On entre N le premier terme.
L'algorithme calcule les termes de la suite, le temps de vol, l'altitude maximale.
On visualise ensuite les valeurs sur un graphique.

Tester l'algorithme
Cliquer sur ce bouton pour exécuter l'algorithme : 

Résultats

Code de l'algorithme
1   VARIABLES
2     u EST_DU_TYPE NOMBRE
3     i EST_DU_TYPE NOMBRE
4     n EST_DU_TYPE NOMBRE
5     m EST_DU_TYPE NOMBRE
6     j EST_DU_TYPE NOMBRE
7     p EST_DU_TYPE NOMBRE
8   DEBUT_ALGORITHME
9     AFFICHER "Donnez la valeur de départ de la suite de syracuse."
10    AFFICHER "L'algorithme s'arrête dès que l'on obtient un 1 "
11    AFFICHER "Le fait que cet algorithme atteigne bien cette valeur reste une conjecture alors !"
12    LIRE u
13    n PREND_LA_VALEUR u
14    TANT_QUE (n!=1) FAIRE
15      DEBUT_TANT_QUE
16      SI (n%2==0) ALORS
17        DEBUT_SI
18        n PREND_LA_VALEUR n/2
19        FIN_SI
20        SINON
21          DEBUT_SINON
22          n PREND_LA_VALEUR 3*n+1
23          FIN_SINON
24      AFFICHER "U"
25      i PREND_LA_VALEUR i+1
26      AFFICHER i
27      AFFICHER " = "
28      AFFICHER n
29      SI (n>m) ALORS
30        DEBUT_SI
31        m PREND_LA_VALEUR n
32        FIN_SI
33      FIN_TANT_QUE
34    AFFICHER "Suite de Syracuse U0 = N = "
35    AFFICHER u
36    AFFICHER "Le temps de vol : c'est le plus petit indice n tel que un = 1."
37    AFFICHER "Temps de vol = "
38    AFFICHER i
39    AFFICHER "L'altitude maximale : c'est la valeur maximale de la suite."
40    AFFICHER "Altitude maximale ="
41    AFFICHER m
42    n PREND_LA_VALEUR u
43    TANT_QUE (n!=1) FAIRE
44      DEBUT_TANT_QUE
45      p PREND_LA_VALEUR n
46      SI (n%2==0) ALORS
47        DEBUT_SI
48        n PREND_LA_VALEUR n/2
49        FIN_SI
50        SINON
51          DEBUT_SINON
52          n PREND_LA_VALEUR 3*n+1
53          FIN_SINON
54      j PREND_LA_VALEUR j+1
55      TRACER_SEGMENT (j-1,p)->(j,n)
56      FIN_TANT_QUE
57  FIN_ALGORITHME