Bonjour,
en programmation, il est intéressant de travailler en décomposant le problème posé en sous problèmes.
Le premier problème consiste à construire, pour un entier donné \(u_0\), la liste des termes de la suite de Syracuse de premier terme \(u_0\).
Il s'agit donc de construire une fonction python \(syracuse(u_0)\) prenant en paramètre \(u_0\) et calculant successivement les termes de la suite TANT QUE ces termes ne tombent pas sur la valeur 1 (une fois qu'on arrive sur 1, la suite "stagne" sur 1).
Les termes calculés seront stockés dans une liste dont la longueur correspondra au temps de vol.
Une implémentation pourrait donc être la suivante :
Code : Tout sélectionner
def suite_syracuse(u_0):
suite = [u_0]
u = u_0
while u != 1 :
if u % 2 == 0 :
u = u // 2
else:
u = 3 * u + 1
suite.append(u)
return suite
Il te restera ensuite à calculer successivement les listes de Syracuse partant des entiers successifs 1,2, 3.... et de regarder leur temps de vol. TANT QUE celui-ci est inférieur ou égal à 100, on passe à l'entier suivant.
Je te laisse faire le début, sachant que tu devrais trouver comme premier entier 27, avec un temps de vol de 112.
Bonne continuation