Что такое алгоритм Луна?
Алгоритм Луна (его также называют «формулой mod 10») — это простая схема расчёта контрольной суммы, которую в 1954 году предложил инженер компании IBM Ханс Петер Лун. С его помощью проверяют идентификационные номера: номера кредитных и дебетовых карт, серийные номера телефонов IMEI, а во многих странах — и номера документов. Алгоритм улавливает ошибку в одной цифре и большинство перестановок соседних цифр, однако это не криптографическая защита, а лишь базовая проверка целостности данных.
Как пользоваться калькулятором
Введите проверяемое число в поле (пробелы и дефисы убираются автоматически). Калькулятор обработает цифры, применит контрольную сумму Луна и сообщит, является ли число ВЕРНЫМ или НЕВЕРНЫМ, а также покажет итоговую сумму, остаток от деления на 10 и последнюю контрольную цифру.
Разбор формулы
Читайте цифры справа налево. Самую правую (контрольную) цифру оставьте без изменений, а каждую вторую цифру удвойте. Если при удвоении получается число больше 9, вычтите из него 9 (это то же самое, что сложить две его цифры: например, \(8\times2=16 \to 1+6=7\)). Сложите все полученные значения. Если итог делится на 10 без остатка, число проходит проверку Луна.
$$\text{Valid} \iff \left(\sum_{i=0}^{n-1} f(d_i)\right) \bmod 10 = 0 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} d_i &= i\text{-th digit of } \text{Number} \text{ (from right)} \\ f(d_i) &= \begin{cases} d_i & i \text{ even} \\ 2d_i - 9\,[2d_i>9] & i \text{ odd} \end{cases} \end{aligned} \right.$$
Пример с расчётом
Возьмём число 79927398713. Удваиваем каждую вторую цифру справа и уменьшаем значения больше 9 — в результате сумма скорректированных цифр равна 70. Поскольку \(70 \bmod 10 = 0\), число верное.
Частые вопросы
Если число прошло проверку Луна, значит ли это, что карта настоящая? Нет. Проверка лишь подтверждает, что номер составлен правильно; она не показывает, существует ли такой счёт и есть ли на нём средства.
Какие символы можно вводить? Учитываются только цифры; пробелы, дефисы и другие символы удаляются перед расчётом.
Зачем вычитать 9 при удвоении? Вычитание 9 из удвоенной цифры, превышающей 9, даёт тот же результат, что и сложение двух её цифр, — а именно этого и требует исходное правило Луна.