Kontrola IČPE pomocí Luhnova algoritmu

Luhnův algoritmus pro kontrolu IČPE

(osmimístné identifikační číslo lékařského pracoviště pro e - Podání)

Luhnův algoritmus je jednoduchý algoritmus kontrolního součtu čísel, jehož účelem je pomoci při detekci náhodných chyb v zápisu nebo přepisu různých identifikačních čísel. Algoritmus rozpozná chybu v jedné číslici, rozpozná prohození dvou sousedních číslic, s výjimkou 90 a 09. Číslo, které má být pomocí Luhnova algoritmu chráněno, se doplní zprava o jednu kontrolní číslici vypočtenou způsobem uvedeným níže. Kontrola čísla poté spočívá ve výpočtu kontrolního součtu a ověřením, že tento kontrolní součet je beze zbytku dělitelný 10.

 

Výpočet kontrolní číslice

Vstupem je číslo libovolné délky. Výpočet probíhá ve třech krocích:

Pro každou lichou číslici zprava spočítáme její dvojnásobek.

Ciferné součty získaných dvojnásobků sečteme se zbývajícími číslicemi.

Kontrolní číslice je doplněk do 10 pro součet z bodu 2 mod 10.

 

Kontrola správnosti hodnoty

Vstupem je celé kontrolované číslo včetně kontrolní číslice. Ověření probíhá ve třech krocích:

Pro každou druhou číslici (bráno zprava, tedy se netýká kontrolní číslice) spočítáme její dvojnásobek. Liché číslice ponechte beze změny. I když Vám vznikne dvouciferné číslo, postupujte dále podle návodu.

Ciferné součty získaných dvojnásobků sečteme se zbývajícími číslicemi.

Pokud nám vyšel výsledek končící nulou (tedy číslo, jehož zbytek po dělení 10 je nula), původní číslo prošlo testem, jinak jím neprošlo.

 

Příklad kontroly:

IČPE: 10023612.

 

Postup kontroly dle Luhnova algoritmu:

Po vynásobení číslic na sudých pozicích (zprava) dvěma získáváme čísla (2 x 1) = 2, (2 x 3) = 6, (2 x 0) = 0 (2 x 1) = 2.

Jejich ciferný součet se zbývajícími číslicemi je 2 + 0 + 6 + 2 + 0 + 6 + 2 + 2 = 20.

Číslo 20 je dělitelné deseti.

IČPE 10023612 splňuje kontrolu podle Luhnova algoritmu.