Алгоритм Луна - это формула контрольной суммы, используемая для проверки номеров кредитных карт. Он был изобретен Петером Люном, немецким исследователем IBM, в 1954 году для защиты от опечаток или перевернутых цифр при наборе номеров кредитных карт.

Как это работает?

Шаг 1)

Начиная со второго числа справа (подчеркнутого синим цветом ниже), удваивайте каждую вторую цифру, как показано ниже.

Шаг 2)

Вычислите сумму всех чисел, которые остались позади (не подчеркнуты выше) на предыдущем шаге, и добавьте их к числам, которые были удвоены (числа подчеркнуты выше).

Шаг 3)

Вычислите по модулю 10 (разделите на 10 и возьмите остаток) результат, вычисленный на предыдущем шаге. Если результат операции по модулю равен нулю, номер кредитной карты действителен. Если результат по модулю отличен от нуля, то это недействительный номер кредитной карты. В нашем случае результат такой:

Давайте рассмотрим более сложный пример, который охватывает правило, о котором мы еще не упомянули.

В этом примере удвоение 9 и 7 дает двузначное число (18 и 14), как показано выше. Когда это происходит, нам нужно выполнить дополнительный шаг, а именно преобразовать двузначные числа в однозначное число путем суммирования двух цифр. Следовательно, 18 становится 1 + 8 = 9, а 14 становится 1 + 4 = 5.

Суммирование удвоенных цифр с оставленными цифрами дает 70. Вычисление по модулю 10 из 70 показывает, что номер карты действителен.

Теперь, когда вы понимаете, как работает этот алгоритм, вы можете добавить его в свое приложение, чтобы мгновенно сообщать пользователю, если он неправильно набирает номер своей кредитной карты.

Спасибо, что нашли время прочитать эту статью.