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 den
par2
. Si ce reste est nul, c'est quen
est un nombre pair.
Exemple
>>> 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]
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-nldef syracuse(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-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-nl
A
Z