Mathématiques (spécialité) · PremièreÉpreuve anticipée de mathématiques
Algorithmes sur les suites : cours de Première spécialité maths
Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur
L'essentiel
- Une suite se programme avec une boucle for : on part de et on applique la relation de récurrence autant de fois que nécessaire (n passages pour atteindre ).
- Avec une formule explicite, pas de boucle : une seule ligne calcule directement ; la boucle sert quand la suite est donnée par récurrence.
- Pour une liste des termes, on ajoute chaque valeur avec append ou on utilise une compréhension de liste ; pour une somme, on utilise un accumulateur initialisé à 0.
- Pour un seuil, le nombre de passages n'est pas connu d'avance : on utilise une boucle while qui s'arrête dès que la condition est atteinte.
- Un algorithme se teste à la main avec un tableau de suivi des variables, et on contrôle toujours le premier et le dernier tour (erreurs « décalées d'un cran »).
Pourquoi programmer des suites ?
Une suite, c'est une liste de nombres rangés dans un ordre précis : , , , et ainsi de suite. En Première, tu en as étudié plusieurs modes de définition, et tu sais calculer à la main les premiers termes. Mais que faire si on te demande , ou le premier terme qui dépasse un million ? À la main, c'est interminable. Un ordinateur, lui, répète une même opération des milliers de fois sans se fatiguer. C'est tout l'intérêt de ce chapitre : traduire une suite en programme Python.
Le programme de Première place d'ailleurs les suites parmi les grands thèmes où l'on modélise et où l'on représente des situations 1. Et les ressources académiques proposent de mettre en place les différents modes de génération d'une suite, avec un algorithme dès qu'il faut résoudre un problème de seuil 3. Tu vas donc retrouver ces idées tout au long du chapitre.
Un algorithme peut se présenter sous plusieurs formes : en phrases, sous forme graphique (un organigramme) 4, ou directement dans un langage de programmation. Dans ce cours, on écrit directement en Python, car c'est le langage que tu utilises au lycée. Au cycle 4, l'algorithmique avait déjà pour but de développer la pensée algorithmique et la résolution de problèmes, pas de former des experts 2 : tu n'as donc rien de nouveau à craindre, il s'agit surtout de bien organiser tes idées.
Les deux façons de définir une suite, et ce que cela change pour le programme
Avant de programmer, rappelons comment une suite peut être donnée. Cela décide du type de programme à écrire.
- Par une formule explicite : . Pour connaître , on remplace par .
- Par une relation de récurrence : on donne le premier terme et une règle qui fait passer d'un terme au suivant, par exemple et . Pour connaître , il faut en principe connaître , qui lui-même demande , etc.
Ces deux modes font partie de ceux que les ressources d'accompagnement invitent à faire manipuler aux élèves 3.
- RepérerFormule explicite ou récurrence ?
- InitialiserPremier terme, accumulateur, compteur n
- Choisir la bouclefor si n connu, while pour un seuil
- Mettre à jourTerme suivant, somme, compteur
- TesterCas n = 0 et cas calculé à la main
Calculer un terme avec une boucle for
C'est le cas le plus courant en récurrence. L'idée est de garder dans une variable u la valeur du terme « courant », puis de la remplacer par le terme suivant à chaque tour de boucle.
Le point qui déroute le plus : la ligne u = 2 * u + 1 n'est pas une équation. Le signe = de Python signifie « range dans la variable de gauche le résultat du calcul de droite ». Python calcule d'abord 2 * u + 1 avec l'ancienne valeur de u, puis range le résultat dans u. L'ancienne valeur disparaît : on ne conserve que le terme courant.
| Moment | k | u |
|---|---|---|
| Avant la boucle | — | 3 |
| Tour 1 | 0 | 7 |
| Tour 2 | 1 | 15 |
| Tour 3 | 2 | 31 |
| Tour 4 | 3 | 63 |
Ce tableau s'appelle un tableau de suivi (ou trace d'exécution). Il liste, tour après tour, la valeur de chaque variable. C'est l'outil qui permet de comprendre un programme sans l'exécuter, et il est très utile en contrôle : on te demandera souvent de « faire fonctionner l'algorithme à la main ».
Utiliser une formule explicite
Quand la suite est donnée par une formule explicite, aucune boucle n'est nécessaire : la fonction traduit simplement la formule.
Pour notre suite , , on peut démontrer que . Vérifions : et , ce qui correspond.
def terme_explicite(n):
return 4 * 2 ** n - 1
En Python, la puissance s'écrit ** et non ^.
Démonstration · Pourquoi $u_n = 4 \times 2^n - 1$ ?
Ajoutons aux deux membres de la relation : . La suite est donc géométrique de raison et de premier terme . Ainsi , d'où .
Construire la liste des termes
Pour tracer un nuage de points, repérer le sens de variation ou chercher un motif, on veut parfois tous les termes jusqu'à un rang donné. On les range alors dans une liste. Il y a deux façons de faire, que tu connais grâce aux listes en Python.
Calculer une somme de termes
Autre besoin classique : additionner les termes . On utilise un accumulateur, c'est-à-dire une variable qui part de et à laquelle on ajoute chaque terme au fur et à mesure.
Pour la suite de notre exemple :
def somme(n):
u = 3
s = 3
for k in range(n):
u = 2 * u + 1
s = s + u
return s
Ici, s est initialisée avec parce que le premier terme fait partie de la somme et qu'il n'est pas ajouté dans la boucle. Pour n = 3, on trouve .
Chercher un seuil avec une boucle while
Jusqu'ici, on connaissait le nombre de tours à l'avance : c'était . Mais une question comme « à partir de quel rang la suite dépasse-t-elle 1 000 ? » ne donne pas ce nombre. Il faut s'arrêter dès que la condition est vérifiée. C'est le rôle de la boucle while (« tant que »).
Les ressources académiques mentionnent justement qu'un algorithme permet de résoudre ce type de problème de seuil 3, et elles le rencontrent aussi dans un contexte financier : déterminer le nombre de mensualités d'un prêt 3. Le chapitre suivant (méthode de seuil et de balayage) approfondira cette technique ; voici déjà le principe de base.
Tester, vérifier, utiliser un tableau de suivi
Un programme qui s'exécute sans message d'erreur n'est pas forcément un programme correct. Il peut calculer autre chose que ce qu'on voulait, comme une valeur décalée d'un rang. Avec des suites, trois contrôles suffisent la plupart du temps.
Les algorithmes sont puissants, mais ils exécutent exactement ce qu'on leur écrit, rien de plus. Ils sont d'ailleurs conçus par des personnes et ne sont pas neutres par nature : leurs choix de conception pèsent sur leurs résultats 4. À notre échelle, cela veut dire une chose très simple : c'est à toi de vérifier que le programme répond bien à la question posée.
Les erreurs fréquentes, à connaître avant l'épreuve
Exercices corrigés
Exercice 1 Calculer un terme par récurrence
On considère la suite définie par et .
- Calcule à la main , et .
- Complète le programme pour qu'il renvoie :
def terme(n):
u = ...
for k in range(...):
u = ...
return u
- Quelle valeur renvoie
terme(5)?
Indice 1
Pour passer de à , combien de fois applique-t-on la règle ?
Indice 2
Fais un tableau de suivi avec les colonnes k et u.
Voir la correction pas à pas
Calcul à la main : , puis , puis .
Initialisation : la variable
uprend le premier terme, doncu = 2.Nombre de tours : on applique la règle fois pour aller de à , donc
range(n).Instruction dans la boucle :
u = 3 * u - 1.Calcul de en poursuivant : , puis .
terme(5) renvoie 365. Le programme complet est u = 2, range(n), u = 3 * u - 1.
Exercice 2 Somme de termes d'une suite arithmétique
Soit la suite définie par et .
v = 4
s = 0
for k in range(21):
s = s + v
v = v + 5
- Quels termes sont additionnés dans
sà la fin de ce programme ? - Donne la formule explicite de .
- Quelle est la valeur finale de
s?
Indice 1
La boucle fait 21 passages et additionne la valeur courante avant de la modifier.
Indice 2
Une suite arithmétique de raison vérifie .
Voir la correction pas à pas
Le programme ajoute
vàspuis calcule le terme suivant. Au premier tour, il ajoute ; au dernier (21e tour), il ajoute . Doncs, soit 21 termes.La suite est arithmétique de raison : .
Dernier terme additionné : .
Somme de termes consécutifs : .
Contrôle : et , d'où .
La valeur finale de s est 1134. Remarque que le dernier terme calculé dans v () n'est jamais ajouté : c'est sans conséquence sur la somme.
Exercice 3 Trouver un seuil pour une suite géométrique
Une quantité vaut 500 au départ et double à chaque étape : et .
- Écris une fonction
rang_depasse(S)qui renvoie le plus petit entier tel que . - Donne la valeur renvoyée pour .
Indice 1
Utilise une boucle while dont la condition est w <= S.
Indice 2
Le terme général est : cherche la plus petite puissance de 2 supérieure à .
Voir la correction pas à pas
Initialisation :
n = 0etw = 500.Boucle :
while w <= S:puisw = 2 * wetn = n + 1. À la sortie,return n.Calcul à la main : on cherche , soit .
Puissances de 2 : (trop petit) et (suffisant).
Contrôle avec la suite : et .
La fonction renvoie 8 pour . Le rang trouvé est celui du premier terme qui dépasse le seuil.
Exercice 4 Les motifs de billes
Dans un exemple de ressource académique, le premier motif en billes en demande 2, le deuxième 6, le troisième 12 et le quatrième 20 3. On admet que le motif numéro demande billes.
- Vérifie cette formule sur les quatre motifs donnés.
- Écris un programme qui renvoie le numéro du premier motif nécessitant strictement plus de 300 billes.
- Quel numéro obtient-on ?
Indice 1
La suite commence au rang : initialise n = 1.
Indice 2
Teste les valeurs et .
Voir la correction pas à pas
Vérification : , , , . La formule correspond aux quatre motifs.
Programme :
n = 1, puiswhile n * (n + 1) <= 300:etn = n + 1dans la boucle, puisprint(n).À la main : , qui est inférieur à , donc la boucle continue.
Au tour suivant : , qui dépasse , donc la boucle s'arrête avec
n = 17.Contrôle algébrique : équivaut à , dont la racine positive vaut environ , donc le plus petit entier convenable est .
Le premier motif qui demande plus de 300 billes est le motif numéro 17 (306 billes).
Quiz
8 questions · correction immédiate · ton score reste sur ton appareil.
-
Trois passages : . La valeur finale est . Répondre revient à ne faire que deux tours, et répondre à en faire quatre : il faut compter exactement le nombre de passages de
range(3). -
Passer de à demande applications de la règle, d'où
range(n). Les passages sont une erreur fréquente : ils fournissent . Le nombre de passages ne dépend pas de la valeur du premier terme. -
C'est bien la définition d'un algorithme 4. Il ne se limite pas à un seul cas : le même algorithme sert pour des valeurs différentes des paramètres. Dire « Faux » sous prétexte qu'un programme calcule un seul nombre à la fois oublie qu'il fonctionne pour n'importe quelle entrée.
-
range(4)fait varierkde à : on calcule , puis , et . La liste[4, 7, 10, 13]correspond àrange(1, 5), et[1, 4, 7]oublie la valeurk = 3. La liste[0, 3, 6, 9]oublie le « +1 ». -
On continue tant que le seuil n'est pas dépassé, donc tant que
u <= S. La conditionu > Sest l'inverse : la boucle ne démarre pas si le premier terme est sous le seuil. Une bouclefor range(S)suppose un nombre de tours connu, ce qui n'est pas le cas ici. -
Les termes sont et leur somme vaut . Écrire revient à oublier le facteur ; écrire ou vient d'une erreur d'addition ou d'un terme oublié. Le rang compte pour un terme, même si sa valeur est nulle.
-
L'accumulateur à et la formule explicite sans boucle sont corrects. En revanche,
u = 2 * u + 1est une affectation : Python calcule le membre de droite avec l'ancienne valeur deu, puis range le résultat. Et^n'est pas la puissance en Python : elle s'écrit**. -
C'est faux : on remplace simplement par dans la formule. La boucle est utile pour une définition par récurrence, ou pour chercher un seuil. Croire le contraire revient à confondre les deux modes de définition d'une suite.
Les questions qu'on se pose
Pourquoi écrit-on range(n) et pas range(n+1) pour calculer u_n ?
Parce que la boucle part déjà de , qui est donné par l'initialisation. Pour atteindre , il reste passages à faire. La confusion vient de l'idée qu'il y a « termes » : c'est vrai pour la liste de à , mais pas pour le nombre d'opérations à effectuer. Le test de n = 0 est un bon réflexe : aucun passage ne doit avoir lieu.
Quelle différence entre for et while ?
Avec for, tu connais le nombre de tours avant de commencer (par exemple ). Avec while, tu répètes tant qu'une condition est vraie, sans savoir combien de tours seront nécessaires, ce qui convient aux problèmes de seuil 3. Si tu hésites, demande-toi : « puis-je dire combien de fois je répète ? ».
Mon programme tourne sans s'arrêter, que faire ?
C'est presque toujours une boucle while dont la condition ne devient jamais fausse. Vérifie trois choses : la variable est bien mise à jour dans la boucle, la condition est dans le bon sens, et la suite atteint vraiment le seuil (une suite décroissante ne dépassera jamais un seuil élevé). Pour le tester, fais un tableau de suivi sur les trois ou quatre premiers tours.
Comment savoir si mon algorithme est correct ?
Teste le plus petit cas (), compare avec des termes calculés à la main, et si possible avec une formule explicite ou une formule de somme. Un tableau de suivi permet aussi de « jouer le rôle de l'ordinateur ». Un programme qui ne produit pas d'erreur n'est pas pour autant juste : l'erreur la plus courante reste le décalage d'un rang.
Pourquoi ne pas utiliser toujours la formule explicite ?
Parce qu'elle n'existe pas toujours, ou qu'elle n'est pas connue : beaucoup de suites sont données seulement par récurrence. Quand les deux existent, on peut les comparer pour vérifier son travail. La boucle reste le moyen général ; la formule est un raccourci quand on la possède.
Sources
- Programmes et ressources en mathématiques — voie générale et technologique, Éduscol. Consulté le 6 novembre 2026.
- Algorithmique et programmation — Informer et accompagner, Éduscol. Consulté le 6 novembre 2026.
- Modéliser et Représenter — Ressource académique, Ressources Académiques. Consulté le 6 novembre 2026.
- Algorithme, Wikipédia. Consulté le 6 novembre 2026.
- Algorithme D*, Wikipédia. Consulté le 6 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.