Quand la somme dépasse cinq
Exercice · niveau 3 (difficile) · mathématiques (ECT 1re année), chapitre 13 — Informatique et algorithmique · Suites et rangs d'arrêt
Énoncé
Écrire un script qui donne le plus petit entier tel que . Expliquer pourquoi une boucle for ne convient pas, puis donner la valeur trouvée.
Corrigé
Pourquoi pas for. Une boucle for exige de connaître le nombre de tours avant de commencer. Or c'est précisément ce nombre que l'on cherche : on a une condition d'arrêt, pas un compte. C'est le cas d'emploi du while.
Le script.
s = 0
n = 0
while s < 5:
n = n + 1
s = s + 1/n
print(n, s)
# 83 5.002068272680166
L'ordre des deux lignes compte. On incrémente n avant d'ajouter 1/n. Dans l'autre ordre, le premier tour diviserait par zéro et le script s'arrêterait sur une erreur.
La réponse. , et la somme vaut alors .
Le contrôle. Avec termes la somme ne vaut que : elle est donc bien passée au-dessus de entre le et le terme, ce qui confirme que est le plus petit.
Ce que cela révèle. La somme croît, mais de plus en plus lentement : il a fallu termes pour atteindre , et il en faudrait plus de pour atteindre . Elle finit pourtant par dépasser n'importe quel seuil, aussi grand soit-il — c'est une croissance sans limite, mais d'une lenteur que l'intuition refuse.
Le point à retenir. for quand le nombre de tours est connu, while quand il est cherché. Et une boucle while se relit toujours en se demandant ce qui, dans son corps, la fait progresser vers l'arrêt.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.