Aller au contenu

Mathématiques (spécialité) · PremièreÉpreuve anticipée de mathématiques

Automatismes de première : exercices corrigés (Python, suites)

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • Un automatisme se construit en répétant une même procédure sur des situations variées 1.
  • Une liste en compréhension s'écrit [expression for n in range(k) if condition] : lis-la comme une phrase.
  • Pour une suite, on calcule les premiers termes à la main avant d'écrire la boucle, puis on compare.
  • Un seuil se cherche avec une boucle while : on avance tant que la condition n'est pas atteinte, et on renvoie le premier rang qui convient.
  • Pour réfuter une affirmation « pour tout n », un seul contre-exemple suffit ; pour la démontrer, des essais ne suffisent jamais.

Comment utiliser ces exercices

Ces exercices t'entraînent aux gestes qui reviennent sans cesse en première : lire une liste en compréhension, calculer les termes d'une suite, chercher un seuil, parcourir une liste pour compter ou comparer, et raisonner proprement sur une affirmation « pour tout n ». Ils sont classés du plus simple au plus délicat.

Un automatisme, ce n'est pas un réflexe aveugle. Les ressources d'accompagnement du ministère proposent des pistes pour installer, faire vivre et renforcer ces automatismes chez les élèves 1. Elles expliquent aussi qu'une procédure se règle et devient automatique par étapes : plus on la rencontre souvent, et dans des contextes différents, plus elle s'installe 1. Concrètement : refais les mêmes gestes régulièrement, mais sur des énoncés qui ne se ressemblent pas.

Rappels utiles avant de commencer

Les exercices

Exercice 1 Lire une liste en compréhension

★☆☆Environ 5 min

On considère l'instruction Python :

L = [3*n + 2 for n in range(5)]
  1. Écris la liste L obtenue.
  2. Calcule la somme des éléments de L.
Indice 1

range(5) donne les entiers de 0 à 4 : calcule 3n+23n+2 pour chacun.

Indice 2

Additionne les cinq valeurs une à une, ou remarque qu'elles augmentent de 3 à chaque fois.

Voir la correction pas à pas
  1. range(5) parcourt n=0,1,2,3,4n=0,1,2,3,4 (le 5 est exclu).

  2. On calcule : 3×0+2=23\times0+2=2, 3×1+2=53\times1+2=5, 3×2+2=83\times2+2=8, 3×3+2=113\times3+2=11, 3×4+2=143\times4+2=14.

  3. La liste est donc [2, 5, 8, 11, 14].

  4. On additionne : 2+5+8+11+14=402+5+8+11+14=40.

La liste est [2, 5, 8, 11, 14] et la somme vaut 40. Les éléments augmentent de 3 à chaque pas : c'est une suite arithmétique de raison 3 écrite sous forme de liste.

Exercice 2 Un terme éloigné d'une suite arithmétique

★☆☆Environ 6 min

La suite (un)(u_n) est définie par u0=5u_0=5 et, pour tout entier nn, un+1=un+4u_{n+1}=u_n+4.

  1. Calcule u1u_1, u2u_2 et u3u_3.
  2. Donne l'expression de unu_n en fonction de nn.
  3. En déduire u10u_{10} sans écrire dix lignes de calcul.
Indice 1

Chaque terme s'obtient en ajoutant toujours le même nombre au précédent : de quel type de suite s'agit-il ?

Indice 2

Pour passer de u0u_0 à u10u_{10}, combien de fois ajoute-t-on 4 ?

Voir la correction pas à pas
  1. On applique la relation : u1=5+4=9u_1=5+4=9, u2=9+4=13u_2=9+4=13, u3=13+4=17u_3=13+4=17.

  2. On ajoute toujours 4 : la suite est arithmétique de raison 4 et de premier terme u0=5u_0=5.

  3. Pour tout nn, un=u0+n×r=5+4nu_n=u_0+n\times r=5+4n.

  4. Pour n=10n=10 : u10=5+4×10=45u_{10}=5+4\times10=45.

On trouve u1=9u_1=9, u2=13u_2=13, u3=17u_3=17, un=5+4nu_n=5+4n et u10=u_{10}= 45. Réflexe à garder : « j'ajoute toujours la même chose » doit faire penser à la forme explicite u0+nru_0+nr.

Exercice 3 Compter avec un filtre

★☆☆Environ 6 min

On donne la liste L = [12, 5, 8, 20, 3, 15, 9].

  1. Écris la liste [x for x in L if x > 8].
  2. Que renvoie len([x for x in L if x > 8]) ?
  3. Écris une fonction compte(L, a) avec une boucle for qui renvoie le nombre d'éléments de L strictement supérieurs à a.
Indice 1

Le mot if à la fin de la compréhension garde seulement les éléments qui vérifient la condition. Attention : > 8 est strict, le 8 n'est pas gardé.

Indice 2

Dans la fonction, utilise un compteur initialisé à 0 avant la boucle.

Voir la correction pas à pas
  1. On teste chaque élément : 12 oui, 5 non, 8 non (strict), 20 oui, 3 non, 15 oui, 9 oui.

  2. La liste filtrée est [12, 20, 15, 9].

  3. len renvoie le nombre d'éléments de cette liste : 4.

  4. Fonction : on pose c = 0, on parcourt L, on ajoute 1 à c à chaque x > a, puis on renvoie c.

La liste filtrée est [12, 20, 15, 9], donc len renvoie 4. Le point de vigilance est l'inégalité stricte : l'élément 8 n'est pas compté.

Exercice 4 Une suite récurrente à la main puis par le calcul

★★☆Environ 10 min

La suite (un)(u_n) est définie par u0=4u_0=4 et un+1=2un−3u_{n+1}=2u_n-3.

  1. Calcule u1u_1, u2u_2, u3u_3.
  2. Écris une fonction Python terme(n) qui renvoie unu_n.
  3. On pose vn=un−3v_n=u_n-3. Montre que (vn)(v_n) est géométrique, puis donne u5u_5.
Indice 1

Dans la fonction, la boucle for i in range(n) doit être exécutée exactement nn fois.

Indice 2

Exprime vn+1v_{n+1} en fonction de vnv_n en remplaçant un+1u_{n+1} par 2un−32u_n-3.

Voir la correction pas à pas
  1. u1=2×4−3=5u_1=2\times4-3=5, u2=2×5−3=7u_2=2\times5-3=7, u3=2×7−3=11u_3=2\times7-3=11.

  2. Fonction : u = 4, puis for i in range(n): u = 2*u - 3, puis return u.

  3. Pour la suite (vn)(v_n) : vn+1=un+1−3=2un−3−3=2un−6=2(un−3)=2vnv_{n+1}=u_{n+1}-3=2u_n-3-3=2u_n-6=2(u_n-3)=2v_n.

  4. La suite (vn)(v_n) est donc géométrique de raison 2, avec v0=4−3=1v_0=4-3=1. Ainsi vn=2nv_n=2^n.

  5. On revient à un=vn+3=2n+3u_n=v_n+3=2^n+3. Pour n=5n=5 : u5=32+3=35u_5=32+3=35.

  6. Contrôle avec la boucle : u4=2×11−3=19u_4=2\times11-3=19 puis u5=2×19−3=35u_5=2\times19-3=35. Les deux méthodes concordent.

On obtient u1=5u_1=5, u2=7u_2=7, u3=11u_3=11, un=2n+3u_n=2^n+3 et u5=u_5= 35. Garde l'habitude de confronter la formule explicite à un calcul de proche en proche : si les deux résultats diffèrent, il y a une erreur quelque part.

Exercice 5 Chercher un seuil dans une suite géométrique

★★☆Environ 10 min

Un capital de 200200 euros est placé à intérêts composés au taux annuel de 5 %5\ \%. On note cnc_n le capital après nn années, avec c0=200c_0=200.

  1. Exprime cn+1c_{n+1} en fonction de cnc_n, puis cnc_n en fonction de nn.
  2. Écris une fonction seuil() qui renvoie le plus petit entier nn tel que cn>300c_n>300.
  3. Détermine cet entier par le calcul.
Indice 1

Augmenter de 5 % revient à multiplier par un coefficient. Lequel ?

Indice 2

Résous 200×1,05n>300200\times1{,}05^n>300, c'est-à-dire 1,05n>1,51{,}05^n>1{,}5, en testant des valeurs de nn.

Indice 3

La condition de la boucle while est la négation de cn>300c_n>300.

Voir la correction pas à pas
  1. Une hausse de 5 % correspond au coefficient 1,051{,}05 : cn+1=1,05 cnc_{n+1}=1{,}05\,c_n.

  2. La suite est géométrique : cn=200×1,05nc_n=200\times1{,}05^n.

  3. Fonction : n = 0, c = 200, while c <= 300: on fait c = 1.05*c puis n = n + 1, et on renvoie n.

  4. On cherche 1,05n>1,51{,}05^n>1{,}5. On teste : 1,058≈1,4771{,}05^8\approx1{,}477 (pas assez), 1,059≈1,5511{,}05^9\approx1{,}551 (suffisant).

  5. La suite est croissante, donc dès que le seuil est franchi à n=9n=9, il le reste : le plus petit entier est 99.

Le capital dépasse 300 euros pour la première fois après 9 années. Au rang 8, il vaut environ 295,5295{,}5 euros, ce qui reste en dessous de 300.

Exercice 6 Un contre-exemple qui casse une régularité

★★☆Environ 8 min

Léa observe que pour n=0,1,2,3,4n=0,1,2,3,4, le nombre f(n)=n2+n+41f(n)=n^2+n+41 donne 41,43,47,53,6141, 43, 47, 53, 61, qui sont tous premiers. Elle affirme : « pour tout entier naturel nn, f(n)f(n) est premier ».

  1. Calcule f(40)f(40).
  2. Montre que f(40)f(40) s'écrit comme un produit de deux entiers supérieurs à 1.
  3. Que peux-tu conclure sur l'affirmation de Léa ?
Indice 1

Remplace nn par 40, en faisant attention à 402=160040^2=1600.

Indice 2

Regarde le nombre obtenu : ressemble-t-il à un carré que tu connais ?

Voir la correction pas à pas
  1. f(40)=402+40+41=1600+40+41=1681f(40)=40^2+40+41=1600+40+41=1681.

  2. On remarque que 1681=41×411681=41\times41, car 412=168141^2=1681.

  3. f(40)f(40) est donc un produit de deux entiers supérieurs à 1 : il n'est pas premier.

  4. L'affirmation « pour tout nn » est fausse : n=40n=40 est un contre-exemple.

On trouve f(40)=f(40)= 1681 =412=41^2, qui n'est pas premier. Cinq vérifications réussies n'ont donc rien démontré : un seul contre-exemple suffit à réfuter une affirmation universelle, alors qu'aucune série d'essais ne la prouve.

Exercice 7 Balayage et seuil sur une somme

★★★Environ 12 min

On considère la fonction suivante :

def rang():
    n = 0
    s = 0
    while s <= 100:
        n = n + 1
        s = s + n
    return n
  1. Fais le tableau de suivi des variables n et s pour les quatre premiers passages dans la boucle.
  2. Que représente s après nn passages ? Donne une formule en fonction de nn.
  3. Quelle valeur la fonction renvoie-t-elle ? Justifie par le calcul, sans exécuter le programme.
Indice 1

Ici l'incrément de n a lieu avant la mise à jour de s : suis bien l'ordre des lignes.

Indice 2

Après nn passages, s vaut 1+2+⋯+n1+2+\dots+n. Utilise la formule de la somme des premiers entiers.

Indice 3

Cherche le plus petit nn tel que n(n+1)2>100\frac{n(n+1)}{2}>100 ; encadre avec n=13n=13 et n=14n=14.

Voir la correction pas à pas
  1. Tableau : passage 1 → n=1, s=1 ; passage 2 → n=2, s=3 ; passage 3 → n=3, s=6 ; passage 4 → n=4, s=10.

  2. Après nn passages, s =1+2+⋯+n=n(n+1)2=1+2+\dots+n=\dfrac{n(n+1)}{2}.

  3. La boucle continue tant que s≤100s\leq100 et s'arrête au premier passage où s>100s>100.

  4. Pour n=13n=13 : 13×142=91≤100\frac{13\times14}{2}=91\leq100, la boucle continue.

  5. Pour n=14n=14 : 14×152=105>100\frac{14\times15}{2}=105>100, la boucle s'arrête.

  6. La fonction renvoie la valeur de n à cet instant : 1414.

La fonction renvoie 14. Comme la mise à jour de n précède celle de s, la valeur renvoyée est bien le rang qui a franchi le seuil, et non le suivant. Dans une boucle de seuil, l'ordre des lignes décide de la réponse.

Les questions qu'on se pose

Comment savoir si je dois utiliser une boucle `for` ou une boucle `while` ?

Si le nombre de répétitions est connu à l'avance (calculer u10u_{10}, parcourir une liste), utilise for. Si tu dois répéter jusqu'à ce qu'une condition soit atteinte (premier rang qui dépasse un seuil), utilise while. Dans une boucle while, vérifie toujours que la variable testée évolue à chaque tour, sinon le programme ne s'arrête jamais.

Mon programme donne un rang décalé d'une unité : où chercher l'erreur ?

Trois causes reviennent presque toujours. D'abord range(n), qui s'arrête à n−1n-1. Ensuite l'ordre des lignes dans la boucle : incrémenter le rang avant ou après la mise à jour de la valeur ne donne pas le même résultat. Enfin l'inégalité : <= et < ne définissent pas le même seuil. Pour trouver laquelle est en cause, fais un tableau de suivi des variables sur deux ou trois tours et compare avec un calcul à la main.

Sources

  1. Ressources d'accompagnement - Automatismes en mathématiques, Ministère de l'Éducation nationale. Consulté le 6 novembre 2026.
  2. Automatisme, Wikipédia. Consulté le 6 novembre 2026.
  3. Automatisme (psychologie), 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.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page