MathLvl
Question transversaleMathsNSITransmettre et compresser

Pourquoi la clé d'un IBAN repose-t-elle sur le reste de la division par 97 ?

Un IBAN est valide si un grand nombre formé à partir de lui laisse le reste 1 dans la division par 97. Comme 97 est premier et ne divise ni 10 ni aucun nombre de 1 à 9, toute faute sur un chiffre change le reste. Une inversion de deux chiffres voisins change le nombre de 9(a − b) × 10ᵏ, jamais multiple de 97 : elle est aussi détectée.

Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 10 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 donnant mon RIB pour mon premier job d'été, j'ai remarqué les deux chiffres après « FR » dans l'IBAN. On m'a dit que c'était une « clé de contrôle ». Je me suis demandé pourquoi le système international avait choisi le nombre 97, plutôt que 10 ou 100. La réponse tient à deux propriétés : 97 est premier, et c'est le plus grand nombre premier inférieur à 100.

L'enjeu et les notions du programme

Démontrer, par un raisonnement sur les diviseurs, qu'un code fondé sur un nombre premier détecte toutes les erreurs simples et toutes les inversions.

Mathématiques

  • Nombres premiers, diviseurs, division euclidienne (seconde)
  • Raisonnement par l'absurde (seconde)
  • Pour aller plus loin : lemme de Gauss (maths expertes)

Numérique et sciences informatiques

  • Validation de données, chaînes de caractères (première)
  • Entiers de grande taille en Python (première)

Le plan de l'exposé en 10 min

  1. 1. Introduction

    1 min

    L'IBAN identifie un compte bancaire dans toute l'Europe. Une erreur de saisie peut envoyer de l'argent au mauvais destinataire. Problématique : comment deux chiffres de contrôle peuvent-ils détecter les erreurs de saisie, et pourquoi le nombre 97 ?

  2. 2. NSI : le calcul de vérification

    3 min

    Exemple de la documentation : FR76 3000 6000 0112 3456 7890 189. On déplace les quatre premiers caractères à la fin, on remplace chaque lettre par un nombre (A = 10, …, F = 15, …, R = 27) et on obtient un grand nombre N. L'IBAN est valide si N laisse le reste 1 dans la division par 97. Ici, c'est le cas avec la clé 76.

    N a une trentaine de chiffres : Python le manipule sans difficulté. Dans un tableur ou un petit processeur, on calcule le reste morceau par morceau, en reportant à chaque fois le reste précédent devant les chiffres suivants.

  3. 3. Mathématiques : pourquoi 97 détecte tout

    4,5 min

    Faute sur un chiffre : si le chiffre de rang k passe de a à b, N change de (b-a)×10^(k), avec 1≤|b-a|≤9. Pour que le reste ne change pas, il faudrait que 97 divise (b-a)×10^(k). Or 97 est premier : s'il divise un produit, il divise l'un des facteurs. Il ne divise pas b-a (trop petit) ni 10^(k)=2^(k)5^(k) (ses seuls facteurs premiers sont 2 et 5). L'erreur est détectée.

    Inversion de deux chiffres voisins a et b aux rangs k+1 et k : N change de (a-b)×10^(k+1)+(b-a)×10^(k)=9(a-b)×10^(k). Pour la même raison, 97 ne divise ni 9, ni a-b, ni 10^(k) : l'inversion est détectée.

    Pourquoi un premier proche de 100 ? Deux chiffres de clé donnent au plus 100 valeurs ; prendre le plus grand premier en dessous, 97, maximise le nombre de clés possibles. Une erreur quelconque n'est alors manquée qu'avec une probabilité d'environ 1/97.

  4. 4. Conclusion

    1,5 min

    La clé de l'IBAN choisit 97 parce qu'un nombre premier qui ne divise ni les petits écarts ni les puissances de 10 détecte toutes les fautes sur un chiffre et toutes les inversions voisines. C'est mieux que la clé de Luhn, au prix de deux chiffres. J'ouvre sur le numéro de sécurité sociale, dont la clé utilise aussi 97.

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.

Nbmod97=1 faute : Δ N=(b-a)×10^(k) inversion : Δ N=9(a-b)×10^(k)
97 premier , 97nmid(b-a), 97nmid9, 97nmid10^(k) ⇒ 97nmidΔ N

Conclusion : la réponse à la question

Un nombre premier bien choisi fait d'une clé de contrôle un détecteur infaillible des erreurs simples. La propriété « un premier qui divise un produit divise un des facteurs » est au cœur de la sécurité des virements.

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 97 ne divise-t-il pas 10^k ?

10^(k)=2^(k)×5^(k) n'a que 2 et 5 comme facteurs premiers.

Pourquoi une clé modulo 10 serait-elle moins bonne ?

10 divise 10^k : une faute sur un chiffre autre que le dernier pourrait ne pas changer le reste.

Avec quelle probabilité une erreur quelconque passe-t-elle ?

Environ 1/97, si l'erreur produit un nombre « au hasard ».

Comment calculer le reste d'un nombre de 30 chiffres à la main ?

Par morceaux : on calcule le reste des premiers chiffres, on l'écrit devant les chiffres suivants, et on recommence.

Pourquoi le reste doit-il valoir 1 et non 0 ?

C'est une convention de la norme ; elle évite qu'un IBAN fait de zéros soit valide.

Les pièges qui coûtent des points

  • Dire que 97 a été choisi au hasard.
  • Oublier que la propriété utilisée suppose 97 premier.
  • Croire que la clé détecte toutes les erreurs multiples.

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 →