Annale corrigée Exercice Ancien programme

Numéros de carte bancaire

Liban • Juin 2017

Exercice 4 • 5 points • 65 min

Numéros de carte bancaire

Les thèmes clés

Arithmétique • Algorithmique

 

Un numéro de carte bancaire est de la forme :

a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 c

a1, a2, …, a15 et c sont des chiffres compris entre 0 et 9.

Les quinze premiers chiffres contiennent des informations sur le type de carte, la banque et le numéro de compte bancaire.

c est la clé de validation du numéro. Ce chiffre est calculé à partir des quinze autres.

L'algorithme suivant permet de valider la conformité d'un numéro de carte donné.

S43_algo_001

1. On considère le numéro de carte suivant : 5635 4002 9561 3411.

a) Compléter le tableau ci-dessous permettant d'obtenir la valeur finale de la variable I.

k

0

1

2

3

4

5

6

7

a2k+1

2a2k+1

R

I

b) Justifier que le numéro de la carte 5635 4002 9561 3411 est correct.

c) On modifie le numéro de cette carte en changeant les deux premiers chiffres. Le premier chiffre (initialement 5) est changé en 6. Quel doit être le deuxième chiffre a pour que le numéro de carte obtenu 6a35 4002 9561 3411 reste correct ?

2. On connaît les quinze premiers chiffres du numéro d'une carte bancaire. Montrer qu'il existe une clé c rendant ce numéro de carte correct et que cette clé est unique.

3. Un numéro de carte dont les chiffres sont tous égaux peut-il être correct ? Si oui, donner tous les numéros de carte possibles de ce type.

4. On effectue le test suivant : on intervertit deux chiffres consécutifs distincts dans un numéro de carte correct et on vérifie si le numéro obtenu reste correct.

On a trouvé une situation où ce n'est pas le cas, l'un des deux chiffres permutés valant 1.

Peut-on déterminer l'autre chiffre permuté ?

Les clés du sujet

3. Distinguez le cas où le chiffre choisi est compris entre 0 et 4 du cas où le chiffre choisi est compris entre 5 et 9. Déroulez ensuite l'algorithme pour conclure.

4. Pensez ici à trouver un contre-exemple en choisissant des séries de chiffres les plus simples possibles.

Corrigé

1. a) Comprendre une structure itérative

conseil

Concentrez-vous sur la première structure itérative « Pour » de la phase « traitement ».

On remarquera que les chiffres notés a2k+1 sont les chiffres d'indice impair. On notera également que, d'après l'énoncé, R est le reste de la division euclidienne de 2a2k+1 par 9. Enfin la variable I prend pour valeur la somme des valeurs successives de R obtenues dans le tableau.

k

0

1

2

3

4

5

6

7

a2k+1

5

3

4

0

9

6

3

1

2a2k+1

10

6

8

0

18

12

6

2

R

1

6

8

0

0

3

6

2

I

1

7

15

15

15

18

24

26

La valeur finale de la variable I est 26.

b) Comprendre un algorithme

à retenir

Lisez la phase de sortie pour savoir dans quel cas un numéro de carte est correct.

D'après l'algorithme proposé, si S = I + P + c est un multiple de 10 alors le numéro de la carte est correct.

D'après la question précédente, I = 26.

conseil

Concentrez-vous sur la deuxième structure itérative « Pour » de la phase « traitement ».

On remarquera que les chiffres notés a2k sont les chiffres d'indice pair, par conséquent P prend pour valeur la somme de ces termes et :

P = 6 + 5 + 0 + 2 + 5 + 1 + 4 = 23.

Enfin, d'après le numéro de la carte fourni, c = 1.

On obtient ainsi :

S = I + P + c = 26 + 23 + 1 = 50 = 5 × 10.

S est bien un multiple de 10 donc le numéro de la carte 5635 4002 9561 3411 est correct.

c) Trouver un chiffre manquant dans un numéro de carte bancaire

Si le premier chiffre est changé en 6, alors, en remarquant que2×6=123[9], on constate que la première valeur de R dans le tableau de la question 1. a) devient 3. La valeur initiale de R passant de 1 à 3, la valeur finale de I augmente de 2 et devient 28.

Dans le calcul de P, le chiffre 6 est remplacé par a donc P prend la valeur 23 - 6 + a = 17 + a.

Nous obtenons S = I + P + c = 28 + (17 + a) + 1 = 46 + a. Si S est un multiple de 10, alors le numéro de la carte est correct. Par conséquent, si 46+a0[10], ce qui équivaut à a46[10] soit a4[10], alors le numéro de la carte est correct. Or a est compris entre 0 et 9. Finalement, si a=4, alors le numéro de la carte 6a35 4002 9561 3411 est correct.

2. Justifier l'existence et l'unicité d'une clé

On connaît les quinze premiers chiffres du numéro d'une carte bancaire. On peut déterminer alors sans difficulté la valeur de I + P. Dans la division euclidienne de I + P par 10, il existe un unique couple d'entiers naturels (q  r) tel que I + P = 10q + r où 0  r 10 soit 0  r  9.

On obtient alors I+Pr[10] soit encore I+Pr0[10] avec 0  r  9.

à noter

« S = I + P + c est un multiple de 10 » est équivalent à « I+P+c0[10] »

Si r = 0, alors I+P0[10] et seule la valeur c = 0 (0  c  9) convient pour avoir I+P+c0[10].

Si r ≠ 0, alors : 1  r  9 - 1 -r - 9  9  10 - r  1.

Ensuite I+Pr0[10]I+P+(10r)0[10].

En prenant c = 10 - r, on obtient I+P+c0[10] où 1  c  9, l'unicité de r assurant l'unicité de c.

En résumé, lorsque l'on connaît les quinze premiers chiffres du numéro d'une carte bancaire, il existe une clé c rendant ce code de carte correct et cette clé est unique.

3. Rechercher un numéro de carte bancaire sous contrainte

Notons n la valeur commune prise par tous les chiffres du numéro de la carte bancaire.

Si 0  n  4, alors 0  2n  8. Dans la division euclidienne de 2n par 9, nous avons donc 2n=9×0+2n=R.

Nous obtenons alors I = 8 × 2n, P = 7 × n et c = n.

Ensuite S = I + P + c = 16n + 7n + n = 24n.

Enfin S0[10]24n0[10]4n0[10]. Or cette dernière relation de congruence est vérifiée si et seulement si n = 0 (0  n  4).

Seul un numéro de carte dont tous les chiffres sont égaux à 0 est correct.

Si 5  n  8, alors 10  2n  16. Dans la division euclidienne de 2n par 9, nous avons donc 2n=9×1+2n9=R.

Nous obtenons alors I=8×(2n9), P = 7 × n et c = n.

Ensuite S = I + P + c = 16n - 72 + 7n + n = 24n - 72.

Enfin S0[10]24n720[10]4n20[10]. Or cette dernière relation de congruence est vérifiée si et seulement si n = 8 (5  n  8).

Seul un numéro de carte dont tous les chiffres sont égaux à 8 est correct.

Si n = 9, alors, dans la division euclidienne de 2n par 9, nous avons donc 2n=9×2+0=R.

Nous obtenons alors I = 8 × 0, P = 7 ×= 63 et c = 9.

Ensuite S = I + P + c = 0 + 63 + 9 = 72. Mais S = 72 n'est pas un multiple de 10. Le cas n = 9 ne permet donc pas d'obtenir un numéro de carte correct.

En résumé, un numéro de carte dont tous les chiffres sont égaux peut être correct  les seuls chiffres possibles sont 0 et 8.

4. Rechercher un chiffre après permutation dans un numéro de carte bancaire

L'idée est de construire des numéros de carte bancaire corrects contenant le chiffre 1, qui donnent après permutation des numéros de carte bancaire incorrects pour voir si l'on peut anticiper la valeur du chiffre qui permute avec le 1.

Considérons les numéros suivants :

N1 = 2100 0000 0000 0005

N1= 1200 0000 0000 0005

N2 = 7100 0000 0000 0005

N2= 1700 0000 0000 0005

N1 et N2 sont deux numéros qui correspondent aux contraintes imposées par l'énoncé : présence du 1 et numéros corrects (2×2+1+5=100[10] pour N1  2×7+1+5=14+1+50[10]pour N2).

N1 et N2 sont deux numéros obtenus à partir de N1 et N2 par permutation des deux premiers chiffres dont le 1. Aucun de ces deux numéros n'est correct :

pour N1, 2 × 1 + 2 + 5 = 9 qui n'est pas un multiple de 10 

pour N2, 2 × 1 + 7 + 5 = 14 qui n'est pas un multiple de 10.

En résumé, nous avons construit deux numéros de carte bancaire corrects où l'on a permuté deux chiffres consécutifs l'un étant le 1. On a alors obtenu des numéros de carte bancaire incorrects. L'autre chiffre permuté peut être dans notre cas le 2 ou le 7.

On ne peut donc a priori pas anticiper la valeur de l'autre chiffre permuté.

Accéder à tous les contenus
dès 6,79€/mois

  • Les dernières annales corrigées et expliquées
  • Des fiches de cours et cours vidéo/audio
  • Des conseils et méthodes pour réussir ses examens
  • Pas de publicités
S'abonner