MathLvl
Question transversaleMathsNSITransmettre et compresser

Comment un site marchand sait-il instantanément qu'un numéro de carte bancaire a été mal recopié ?

Le dernier chiffre d'une carte bancaire est une clé de Luhn : on double un chiffre sur deux en partant de la droite, on retire 9 aux résultats supérieurs à 9, et la somme doit être un multiple de 10. Pour 7992739871, la clé vaut 3. Toute faute sur un chiffre est détectée, et presque toutes les inversions de deux chiffres voisins.

Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.

Pourquoi cette question : un modèle d'introduction

Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.

En remplissant un formulaire de paiement, je me suis trompé d'un chiffre dans le numéro de carte, et le site l'a signalé immédiatement, avant même tout contact avec la banque. J'ai voulu comprendre comment il pouvait savoir que le numéro était faux. La réponse est un calcul de somme et de reste, inventé par un ingénieur d'IBM en 1954.

L'enjeu et les notions du programme

Démontrer qu'un code de contrôle détecte certaines erreurs par un raisonnement sur les restes, et identifier ses limites.

Mathématiques

  • Division euclidienne, multiples de 10 (seconde)
  • Raisonnement par disjonction de cas (seconde)
  • Fonctions définies sur un ensemble fini, injectivité (seconde)

Numérique et sciences informatiques

  • Contrôle de validité des données saisies (première)
  • Chaînes de caractères, parcours (première)

Le plan de l'exposé en 9,5 min

  1. 1. Introduction

    1 min

    Les erreurs de saisie les plus courantes sont une faute sur un chiffre et l'inversion de deux chiffres voisins. Problématique : comment un seul chiffre de contrôle peut-il détecter ces erreurs ?

  2. 2. Mathématiques : la formule de Luhn

    4 min

    On part de la droite. Le dernier chiffre (la clé) est gardé tel quel ; on double le suivant, on garde le suivant, et ainsi de suite. Quand un double dépasse 9, on lui retire 9 (ce qui revient à additionner ses chiffres). Le numéro est valide si la somme totale est un multiple de 10.

    Exemple : 7992739871 suivi de la clé 3. En partant de la droite : 3 ; 1 doublé donne 2 ; 7 ; 8 doublé donne 16, donc 7 ; 9 ; 3 doublé donne 6 ; 7 ; 2 doublé donne 4 ; 9 ; 9 doublé donne 18, donc 9 ; 7. Somme : 3+2+7+7+9+6+7+4+9+9+7=70, multiple de 10.

    Erreur sur un chiffre : sur une position non doublée, la somme change de la différence des deux chiffres, entre 1 et 9 : plus multiple de 10. Sur une position doublée, la fonction « doubler puis retirer 9 » envoie 0, 1, …, 9 sur 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 : dix valeurs distinctes. Deux chiffres différents donnent donc des contributions différentes, et la somme change d'un nombre entre 1 et 9. Toute faute sur un chiffre est détectée.

  3. 3. NSI : programmer et connaître les limites

    3 min

    En Python, on parcourt la chaîne à l'envers avec un indice, on double les chiffres d'indice impair, on additionne et on teste le reste de la division par 10. Le calcul est instantané et évite d'interroger la banque pour un numéro manifestement faux.

    Limite : l'inversion de 0 et 9 voisins n'est pas détectée. Le chiffre doublé 0 donne 0 et le 9 non doublé donne 9 (total 9) ; après inversion, 9 doublé donne 18, donc 9, et 0 donne 0 (total 9). Toutes les autres inversions de chiffres voisins sont détectées. La clé de Luhn ne protège pas contre la fraude : elle ne sert qu'à repérer les erreurs de frappe.

  4. 4. Conclusion

    1,5 min

    La clé de Luhn détecte toute faute sur un chiffre, parce que « doubler puis retirer 9 » ne confond jamais deux chiffres, et presque toutes les inversions. Un calcul de reste, fait en une fraction de seconde, évite des milliers d'erreurs de paiement. J'ouvre sur la clé de l'IBAN, qui utilise le reste de la division par 97 et détecte toutes les inversions.

Ce que j'écris au tableau

Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.

7 9 9 2 7 3 9 8 7 1 3 : 3+2+7+7+9+6+7+4+9+9+7=70≡0 ( mod 10)
doubler puis retirer 9 : 0,1,…,9 ↦ 0,2,4,6,8,1,3,5,7,9

Conclusion : la réponse à la question

Un chiffre de contrôle bien conçu repère les erreurs humaines les plus fréquentes. La démonstration repose sur des restes et sur le fait qu'une fonction ne confond pas deux chiffres ; l'exception 09/90 montre qu'il faut toujours chercher les limites d'un code.

Les questions probables du jury

Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.

Pourquoi retirer 9 revient-il à additionner les chiffres ?

Un double entre 10 et 18 s'écrit 1 suivi de u ; la somme de ses chiffres est 1 + u, soit le nombre moins 9.

Le numéro 79927398710 est-il valide ?

Non : la somme vaut 67, pas un multiple de 10.

Pourquoi l'inversion 0-9 n'est-elle pas détectée ?

Les deux ordres donnent la même contribution, 9, à la somme.

La clé de Luhn protège-t-elle contre la fraude ?

Non : n'importe qui peut calculer une clé valide. Elle ne détecte que les erreurs de saisie.

Combien de numéros à 16 chiffres sont valides ?

Un sur dix : le dernier chiffre est imposé par les quinze autres.

Les pièges qui coûtent des points

  • Commencer à doubler par la gauche.
  • Doubler la clé elle-même.
  • Croire que la clé détecte toutes les inversions.

Revoir les notions

Autres questions : transmettre et compresser

Toutes les questions maths-nsi →

Préparer l'oral, pas seulement le contenu

Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.

Méthode : traiter une question de Grand oral →