Алгоритм Луна

Материал из Википедии — свободной энциклопедии

Перейти к: навигация, поиск

Алгоритм Лу́на (англ. Luhn algorithm) — алгоритм вычисления контрольной цифры номера пластиковых карт в соответствии со стандартом ISO/IEC 7812.


Содержание

[править] Алгоритм проверки контрольной цифры

1. Начиная со второго числа справа через 1 (то есть 2,4,6,8,10…) делается проверка: если х*2>9, то из произведения вычитается 9, если х*2≤9, то произведение оставляем без изменения.

например:

4  5  6  1     2  6  1  2     1  2  3  4     5  4  6  4
8     12       4     2        2     6        10    12
8     3        4     2        2     6        1     3

2. Затем все числа складываются.

8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+4 = 57

3. Полученная сумма должна быть кратна 10 (40,50,60,70…)

В примере: последнее число - это контрольная цифра. Для того, чтобы номер был верен в соответствии с алгоритмом Луна, контрольная цифра должна быть равна 7.

4  5  6  1     2  6  1  2     1  2  3  4     5  4  6  7
8     12       4     2        2     6        10    12
8     3        4     2        2     6        1     3
8+5+3+1 + 4+6+2+2 + 2+2+6+4 + 1+4+3+7 = 60


[править] Алгоритм вычисления контрольной цифры

Num[1..N] — номер карты, Num[N] — контрольная цифра

 sum = 0
 for i = 1 to N-1 do
   if (i mod 2 = 0) then
     p = Num[i]
   else
     p = 2*Num[i]
   if (p > 9) then 
     p = p - 9
   sum = sum + p
 sum = sum mod 10
 //дополнение до 10
 sum = (10 - sum) mod 10
 Num[N] = sum

[править] Источники информации

[править] Ссылки

На других языках