Algorytm Luhna
Z Wikipedii
Algorytm Luhna - jeden z najczęściej wykorzystywanych algorytmów służących do sprawdzania poprawności wpisania danej liczby. Jest on używany m.in. do walidacji numerów kart kredytowych, ciągów liczbowych itd. Zasadniczo działa on jedynie dla liczb złożonych z cyfr 0-9. Na końcu liczby doklejana jest cyfra kontrolna, określająca czy poprzedzający ją ciąg cyfr jest wpisany poprawnie.
Algorytm ten wygląda następująco:
- Dla każdej pozycji cyfry określone zostają wagi (mnożniki). Najczęściej jest to 1 dla pozycji nieparzystych, 2 dla parzystych.
- Każdą cyfrę liczby mnożymy przez odpowiadającą jej wagę.
- Jeśli w wyniku mnożenia otrzymamy liczbę dwucyfrową, dodajemy cyfry do siebie otrzymując liczbę jednocyfrową
- Dodajemy wszystkie otrzymane liczby do siebie.
- Wykonujemy operację mod 10 na otrzymanej sumie (pozostawiamy jedynie cyfrę jedności). Otrzymujemy cyfrę kontrolną, która jest "doklejana" do liczby.
[edytuj] Przykład
- Mamy liczbę 92480
- Wykonujemy mnożenie przez odpowiednie wagi:
- 9•1 = 9
- 2•2 = 4
- 4•2 = 8
- 8•2 = 16
- 0•2 = 0
- Cyfry liczby 16 (jako dwucyfrowej) dodajemy do siebie otrzymując 7.
- Otrzymane liczby dodajemy do siebie: 9 + 4 + 8 + 7 = 28
- Wykonujemy operację mod 10: 28 mod 10 = 8
- Cyfrę kontrolną 8 "doklejamy" do liczby otrzymując 924808.