Adloun

Le même calcul, deux algorithmes

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 4 — Les boucles · Du langage naturel à Python

Énoncé

Comparer ces deux façons de calculer : le nombre d'opérations effectuées, et ce qui se passe pour .

# version A
S = 0
for i in range(1, n + 1):
    S = S + i

# version B
S = n * (n + 1) // 2

Corrigé

Version A effectue additions ; version B en effectue trois, quel que soit n.

Pour , la version A demande un milliard de tours — plusieurs minutes — tandis que la version B répond instantanément. Les deux donnent le même nombre, .

La version B repose sur la formule de Gauss , qui se démontre en appariant le premier terme avec le dernier, le deuxième avec l'avant-dernier, etc. : on obtient paires valant chacune .

La leçon est double. D'abord, un raisonnement mathématique peut remplacer une boucle — c'est souvent le plus grand gain de performance disponible. Ensuite, la division est écrite // et non / : le produit est toujours pair, donc le résultat est un entier exact, alors que / renverrait un flottant qui perdrait des chiffres pour de grandes valeurs de n.

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.