Analyse
Ce qu'a observé le jury
Synthèse Hadamard du rapport officiel — citations, chiffres et conseils du jury.
Présentation du sujet
Sujet d'informatique commune (MP/PC/PSI) sur des techniques algorithmiques autour du thème des nombres premiers. Notions vues durant les deux années : représentation des flottants (erreurs d'arrondis), partie entière du logarithme, codage binaire, crible d'Ératosthène, complexité, génération de nombres premiers (Blum-Blum-Shub), méthode des trapèzes vs rectangles.
Structure de l'épreuve
- Partie I — Q1-Q7 — Représentation et flottants(Q1-Q7)Niveau attendu
Q1 numpy/matplotlib ≠ math. Q2 syntaxe flottants : 10e-5 ≠ 10⁻⁵ en Python. Q3 récurrence simple. Q4 partie entière du logarithme en base b. Q5 erreurs d'arrondis dues aux flottants (pas « ordinateur » ou « python »). Q6 préfixe giga. Q7 1 booléen sur 2 bits (faux).
- Partie II — Q8-Q12 — Crible d'Ératosthène et codage binaire(Q8-Q12)Difficile
Q8 traduction de l'algorithme — initialisations, indices erato_iter[i] = primalité de i+1. Q9 dépend de Q8. Q11 somme géométrique 2^k mal calculée. Q12 if a/i == int(a/i) faux pour la divisibilité (utiliser %).
- Partie III — Q13-Q18 — Pseudo-primalité, complexité, intégration(Q13-Q18)Difficile
Q13 valeur de bbs subtile, condition de pseudo-primalité (les 4 conditions toutes nécessaires). Q14 un seul appel à erato_iter. Q15 complexité linéaire imposée. Q16 ne pas appeler Pi dans la boucle, comparer une liste à un flottant. Q18 méthode des trapèzes même complexité que rectangles.
Analyse globale du jury
« La présentation générale de la très grande majorité des copies est satisfaisante. Le jury a été surpris de relever beaucoup d'erreurs de calcul incongrues à ce niveau (somme géométrique). Mélange de notations mathématiques (parties entières, racines) avec le code Python — sanctionné. Certains candidats semblent n'avoir aucune notion de la complexité algorithmique : faire appel à Pi ou erato_iter au cœur d'une double boucle. »
Top pièges sanctionnés
Q2 — 10e-5 ne définit pas 10⁻⁵ en Python-1 pts
« Beaucoup de confusions sur l'écriture des flottants… e-5, 10e-5, ou 10^-5 ne définissent pas 10⁻⁵ en python. Par ailleurs, l'affectation de 10⁻⁸ via rtol=0.00000001 n'est pas une solution élégante. »
Q5 — erreur d'arrondis attribuée à « python »-2 pts
« Beaucoup n'en ont pas été capables, mettant parfois en cause « l'ordinateur », « le langage python » ou prétendant que « l'addition est moins précise que la multiplication ». »
Q7 — booléen sur 2 bits car deux valeurs-1 pts
« Une erreur fréquente : « un booléen doit être codé au minimum sur 2 bits, car il ne peut prendre que deux valeurs ». La notion de bit informatique est donc mal comprise de ces candidats. »
Q12 — if a/i == int(a/i) pour divisibilité-2 pts
« On a lu beaucoup trop de if a/i==int(a/i), ce qui est une solution fausse pour vérifier que a est divisible par i. »
Notation mathématique en code Python-1 pts
« On a remarqué cette année dans beaucoup de copies un mélange entre des notations propres aux mathématiques (parties entières, racines...) et le code Python. Cela est généralement sanctionné : un algorithme en python n'est pas du pseudo-code, il faut utiliser les opérateurs du langage. »
Pi ou erato_iter dans une double boucle-2 pts
« Faire appel à une fonction de complexité significative comme Pi ou erato_iter au cœur d'une double boucle devrait pourtant leur poser un problème... surtout quand il existe une solution beaucoup plus simple et facilement accessible. »
Plusieurs solutions présentées — choix sur la mauvaise-1 pts
« Le jury n'a pas à choisir entre une solution juste et une solution fausse : la notation se fera toujours sur la mauvaise. »
Chapitres clés à maîtriser
Source : Rapport du jury Mines-Ponts · Info PC, session 2019 · PDF officiel ↗
Ressources
Téléchargements
Sujet officiel, corrigé Hadamard et rapport jury — tout en un endroit.
FAQ

