For­mule de Luhn

For­mule de Luhn

sam 16 février 2019 0 Par Ibmiiste

Petite défi­ni­tion de la Luhn

La for­mule de Luhn per­met de véri­fier la vali­di­té d’une suite de chiffre. Ex:SIREN, N°CB, N°PS (Méde­cin pra­ti­cien, etc…). Le nombre est lu de droite à gauche. Les chiffres en posi­tion impaire res­tent tel quel et les chiffres en posi­tion paire sont mul­ti­pliées par 2. Tous les chiffres résul­tants sont ajou­tés. Exemple 456 : 

Chiffres       4             5           6 
Position     3             2           1
Résultats     4 10 6
Résultat 4 + 1 + 0 + 6 = 11

Un nombre Luhn est vali­dé si le résul­tat est divi­sible par 10. Dans l’exemple pré­cé­dent, le nombre n’est pas valide ; 11 n’est pas divi­sible par 10. Un nombre valide est par exemple 455. 

Coding

Voi­ci ci-des­sous, une pro­cé­dure écrite pour véri­fier un nombre selon la for­mule de Luhn. Elle est com­po­sée d’une pro­cé­dure prin­ci­pale et 2 sous-procédures. 

La sous-pro­cé­dure CALCUL déter­mine le résul­tat des addi­tions suc­ces­sives. Remarque : dans le cas du cal­cul des posi­tions paires, une autre règle a été appli­quée sur les résul­tats supé­rieurs à 9. La somme des chiffres obte­nus est égale à la mul­ti­pli­ca­tion par 2 moins 9. 

5x2=10 Résultat 1+0=1 mais aussi 5x2-9=1
6x2=12 Résultat 1+2=3 mais aussi 6x2-9=3
7x2=14 Résultat 1+4=5 mais aussi 7x2-9=5
8x2=16 Résultat 1+6=7 mais aussi 8x2-9=7
9x2=18 Résultat 1+8=9 mais aussi 9x2-9=9

La sous-pro­cé­dure PARITE déter­mine si un chiffre est pair ou impair. 

[pas­ta­code lang=«rpgle » user=«ibmiiste » repos=«luhn » path_id=«controle_luhn » revision=«master » high­light=»» lines=»» provider=«github»/]