Pour construire la suite de Syracuse d'un entier \(n\) strictement positif, on répète la transformation suivante :
Si \(n\) est pair, on le divise par \(2\) ;
Sinon \(n\) devient \(3n+1\).
On admet que, quel que soit l'entier \(n\) choisi au départ, la suite finit toujours par atteindre la valeur \(1\). On convient donc d'interrompre les transformations lorsque l'on a atteint la valeur \(1\).
On rappelle que n%2 renvoie le reste dans la division de n par 2. Si ce reste est nul, c'est que n est un nombre pair.
assert ?
Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.
Ainsi, l'instruction assert3+5*7==38 permet de vérifier que l'expression 3+5*7 est bien évaluée à 38.
Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.
La vidéo ne s'affiche pas... ?
Il peut arriver que les vidéos ne s'affichent pas sur des navigateurs basés sur Chrome, ou si un ad-blocker est activé sur le navaigateur. Essayer avec un autre navigateur si vous êtes dans ce cas (FireFox, typiquement), ou désactivez l'ad-blocker.
Longueur du vol
On a admis que, quel que soit l'entier \(n\) choisi, ce processus de calcul finissait toujours par atteindre \(1\). Par exemple en partant de la valeur \(3\), il y a \(7\) transformations avant d'atteindre \(1\).
Ce nombre de transformations nécessaires est appelé « longueur du vol » de l'entier \(n\).
Écrire une fonction longueur_vol qui prend en paramètre un entier n strictement positif et renvoie la longueur du vol de cet entier.
Écrire une fonction syracuse prenant en paramètres un entier n strictement positif et qui renvoie la liste des termes de la suite de Syracuse de l'entier n.
On rappelle les instructions suivantes :
🐍 Console Python
>>> nombres=[3]# création d'une liste contenant la valeur 3>>> nombres.append(10)# ajout de la valeur 10 (à la fin)>>> nombres[3, 10]
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)