Vidéo terminée
Leçon suivante · leçon 9L'idée de limiteLeçon 8
Python, suites de Syracuse et de Fibonacci
Le cours écrit
8.1 La suite de Syracuse
On choisit un entier , et on pose . Pour tout entier naturel :
- si est pair, ;
- si est impair, .
Cette suite est définie par un algorithme, avec un test sur la parité. En partant de , on obtient . Arrivée à , la suite tourne en rond :
En Python, on découpe le travail en deux fonctions : c'est la programmation modulaire. La fonction suivant calcule le terme d'après, et la fonction syracuse construit la liste. Les symboles // donnent le quotient entier.
def suivant(u):
if u % 2 == 0:
return u // 2
return 3 * u + 1
def syracuse(a, n):
L = [a]
for k in range(n):
L.append(suivant(L[k]))
return L
>>> syracuse(6, 8)
[6, 3, 10, 5, 16, 8, 4, 2, 1]
8.2 Une conjecture ouverte
| Départ | Étapes pour arriver à | Plus grand terme |
|---|---|---|
Pour tous les nombres testés, la suite finit par arriver à . Mais personne n'a su le démontrer : cet énoncé reste une conjecture. Vérifier de très nombreux cas ne fait pas une démonstration.
8.3 La suite de Fibonacci
Elle vient d'un problème de comptage de lapins. Un jeune couple devient adulte en un mois, et chaque mois, tout couple adulte donne naissance à un nouveau couple. On part d'un jeune couple.
| Mois | |||||||
|---|---|---|---|---|---|---|---|
| Couples |
Les couples d'un mois sont ceux du mois précédent, plus les nouveau-nés. Il y a autant de nouveau-nés que de couples adultes, c'est-à-dire que de couples présents deux mois plus tôt. Chaque nombre est donc la somme des deux précédents :
Il faut cette fois deux termes pour calculer le suivant, donc deux premiers termes pour démarrer.
def fibonacci(n):
L = [1, 1]
for k in range(n - 2):
L.append(L[k] + L[k + 1])
return L
>>> fibonacci(10)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
Une liste garde tous les termes, ce qui permet de les comparer. On peut ainsi écrire max(syracuse(7, 16)), qui renvoie , et len(fibonacci(10)), qui renvoie .
Exercices 15 et 16
- Exercice 15 : Syracuse à la main et en Python
- Exercice 16 : monter un escalier
Corrigés
Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.