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

Вычисляет контрольную сумму последовательности цифр при помощи алгоритма Луна, вычисляет проверочную цифру (цифру, которую можно добавить к исходной последовательности, чтобы получить последовательность с контрольной суммой оканчивающейся на 0).

Алгоритм был разработан немецким компьютерным специалистом Гансом Луном в 1954-м году. Алгоритм Луна использует простое правило вычисления контрольной суммы для проверки идентификационных номеров, таких как номера пластиковых карт. Алгоритм был придуман для определения ошибок при вводе номера. Алгоритм определяет ошибки ввода одной неправильной цифры, а также почти все перестановки соседних цифр, за исключением перестановки 09-90 или обратной 90-09.

Следующий калькулятор выдает последнюю цифру контрольной суммы, полученной алгоритмом Луна из заданной последовательности. Также вычисляется проверочная цифра, которая может быть добавлена к исходной последовательности, чтобы получить корректную последовательность( т. е. последовательность, контрольная сумма которой оканчивается на 0).

PLANETCALC, Контрольная сумма, Алгоритм Луна

Контрольная сумма, Алгоритм Луна

Последний разряд контрольной суммы
 
Следующая проверочная цифра
 

Формула очень проста: для того чтобы определить контрольную сумму в соответствии с алгоритмом Луна необходимо просуммировать все нечетные цифры последовательности справа налево, далее прибавить к сумму всех четных цифр, помноженных на 2, при этом если произведение получается больше 9, то из него вычитается 9.
Для определения проверочной цифры мы попросту добавляем «0» к исходной последовательности и вычисляем контрольную сумму полученной последовательности алгоритмом Луна, если полученная контрольная сумма оканчивается на 0, то проверочная цифра это и есть 0, в противном случае проверочная цифра определяется путем вычитания последней цифры полученной контрольной суммы из 10.

Ссылка скопирована в буфер обмена
PLANETCALC, Алгоритм Луна

Комментарии