Алгоритм Луна
Материал из Википедии — свободной энциклопедии
Алгоритм Лу́на (англ. 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
[править] Источники информации
- U.S. Patent 2,950,048 (англ.) Computer for Verifying Numbers, Hans P. Luhn, August 23, 1960.

