Algorithme de Syracuse

L'algorithme de Syracuse

Questions

  1. Définir une fonction python $f(n)$ qui à tout entier $n$ associe $\dfrac{n}{2}$ si $n$ est pair et associe $3*n+1$ si $n$ est impair

    Par exemple $f(8) = 4$ et $f(5) = 16$

    (

    Pour tester si un entier $n$ est pair on fera les test suivant

    
    if n % 2 == 0:
        ..............
    else:
        ..............
    
    
    )

    On traduit "un nombre n est pair" par son reste par la division euclidienne par 2 est 0.( n % a donne le reste de la division euclidienne par a

  2. L'algorithme de Syracuse consiste à répéter la fonction $f$ à partir d'un nombre entier $n$ jusqu'à obtenir le nombre 1Par exemple en partant de 6 on obtient successivement 3, 10, 5, 16, 8, 4, 2, 1

    Obtientdra-t-on toujours 1? A l'heure actuelle on ne sait pas encore

    On conjecture que cette propriété est vraie (Conjecture de Syracuse). Cette conjecture n'est pas encore prouvée. Voir ici

    Ecrire à la main les images successives à partir de 7

  3. Ecrire une fonction python syracuse(n) qui affiche la suite des images $f(n)$,$f(f(n))$ etc... tant que 1 n'a pas été obtenu
  4. On définit la suite de Syracuse de N comme étant la suite de nombres engendrée par l'algorithme de Syracuse commençant par N et se terminant par 1

    Par exemple pour N = 5, la suite est 5, 16, 8, 4, 2, 1

  5. Par exemple pour N = 6, la suite est 6, 3, 10, 5, 16, 8, 4, 2, 1

    On définit le temps de vol de la suite comme étant égal au nombre de répétitions de la boucle

    Dans l'exemple ci-dessus le temps de vol est 8 pour N = 6 et 5 pour N = 5

    On définit l'altitude maximale comme étant la valeur la plus grande prise par N

    Pour N=5 et pour N = 6 l'altitude maximale est 16

    On définit le temps de vol en altitude comme étant égal au plus petit nombre de répétitions au bout duquel la valeur de N devient inférieur ou égale à la valeur initiale de N

    Par exemple pour N = 5 le temps de vol en altitude est de 3 et pour N = 6 il vaut 1

    Introduire trois variables temps_vol, temps_vol_altitude et altitude_max et compléter la fonction ci-dessus pour que soit affiché à la fin de la boucle le temps de vol , le temps de vol en altitude et l'altitude maximale

  6. Quel est le nombre inférieur ou égale à 100, ayant le temps de vol le plus grand et l'altitude maximale la plus grande ? et quelle est cette altitude ?
  7. Même question pour inférieur à 1000

Aspect graphique