Aller au contenu

La suite de Syracuse d'un entier⚓︎

Pour construire la suite de Syracuse d'un entier \(n\) :

  • On utilise une variable éponyme initialisée à \(n\).
  • On crée une liste avec \(n\) comme premier élément,
  • On répète en boucle tant que \(n \neq 1\) :
    • Si \(n\) est pair, on le divise par \(2\),
    • Sinon \(n\) devient \(3n+1\).
    • On ajoute \(n\) à la liste.

On admet que, quel que soit l'entier \(n\) choisi au départ, la suite finit toujours par atteindre la valeur \(1\).

Écrire une fonction syracuse prenant en paramètres un entier n strictement positif et qui renvoie la suite de Syracuse de l'entier n.

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.

Exemple

🐍 Console Python
>>> syracuse(7)
[7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
>>> syracuse(3)
[3, 10, 5, 16, 8, 4, 2, 1]
>>> syracuse(1)
[1]
###
# testsbksl-nlbksl-nlassert syracuse(7) == [bksl-nl 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]bksl-nlassert syracuse(3) == [3, 10, 5, 16, 8, 4, 2, 1]bksl-nlassert syracuse(1) == [1]bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nldef solution(n):bksl-nl suite = [n]bksl-nl while n != 1:bksl-nl if n % 2 == 0:bksl-nl n = n // 2bksl-nl else:bksl-nl n = 3 py-str n + 1bksl-nl suite.append(n)bksl-nl return suitebksl-nlbksl-nlfor n in range(1, 200):bksl-nl resultat = solution(n)bksl-nl assert syracuse(n) == resultat, f"Erreur avec {n}"bksl-nlbksl-nl 5/5

def syracuse(n):bksl-nl ...bksl-nlbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert syracuse(7) == [bksl-nl 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]bksl-nlassert syracuse(3) == [3, 10, 5, 16, 8, 4, 2, 1]bksl-nlassert syracuse(1) == [1]bksl-nlbksl-nlNone

A

Z

Retour en haut de la page