piątek, 8 czerwca 2012

Poprawność liczby


Sprawdzanie poprawności liczby

Algorytm Luhna – jeden z najczęściej wykorzystywanych algorytmów służących sprawdzania poprawności wpisania danej liczby. Jego autorem był Hans Peter Luhn, niemiecki naukowiec pracujący w jednym z najstarszych koncernów informatycznych (IBM).
  Źródło:
  
Posiada szerokie zastosowanie w świecie pieniędzy.

Używany jest między innymi do: 
  • sprawdzania walidacji kart kredytowych
  • numerów ubezpieczeń 



Schemat działania algorytmu jest bardzo przyjemny.
Należy postępować jedynie według wymienionych kroków:
1. Określenie wagi cyfry:                                    
                   liczba parzysta :1
                   liczba nieparzysta: 2
2. Każdą cyfrę z podanej liczby wymnażamy przez jej wagę(od prawej do lewej!)
Przy obliczaniu cyfry kontrolnej przyjmujemy, że ostatnia pozycja jest parzysta, a przy sprawdzaniu - nieparzysta.
3. Jeśli w wyniku mnożenia otrzymamy liczbę dwucyfrową, wtedy sumujemy w liczbę jednocyfrową.
4. Dodajemy wszystkie otrzymane liczby do siebie.
5. Wykonujemy operację mod 10 na otrzymanej sumie (pozostawiamy jedynie cyfrę jedności)
6. Gdy otrzymana cyfra nie równa się 0, odejmujemy ją od 10. Otrzymujemy cyfrę kontrolną, która jest "doklejana" na końcu liczby początkowej.
7. Sprawdzenie poprawności liczby odbywa się poprzez zastosowanie na całej liczbie (łącznie z cyfrą kontrolną) kroków 1-5. Jeżeli liczba jest poprawna otrzymamy w wyniku zero.

    
Źródło:

PRZYKŁAD

501246
Wykonujemy mnożenie przez odpowiednie wagi. Od lewej do prawej, pierwsza pozycja jest nieparzysta. W nawiasie kwadratowym podano indeks pozycji.
Jeśli wynik jest dwucyfrowy, w takim przypadku wykonujemy sumę cyfr tej liczby.

Otrzymane (pogrubione) liczby dodajemy do siebie:
Wykonujemy operację sumy: mod 10.

Jeśli otrzymana liczba jest większa od 0 :
  10 -  wynik ( w tym przypadku : 7 ) ;

10-7 =3

Dopisujemy na końcu wynik z powyższego działania do początkowej liczby:


Sprawdzenie działania tego algorytmu  polega na ponownym jego zastosowaniu.

Jeśli nie popełniliśmy żadnego błędu to wynik winien wynieść 0.

Dla pewności przeprowadzę go jeszcze raz:


 Otrzymane (pogrubione) liczby dodajemy do siebie:
 Wykonujemy operację sumy: mod 10.


 Wynikiem jest 0 - poprawnie przeprowadzony algorytm.


Wykonała Magdalena Burak, V LO, IB