Алгоритм Луна, созданный Хансом Петером Луном в 50-х, это математический способ проверить, корректно ли сформирован номер карты перед тем, как система его обработает. Он не проверяет баланс и не подтверждает реальное существование аккаунта, а просто ловит опечатки и отсеивает номера, которые в принципе не могут быть валидными.
Зачем он нужен:
Быстро понять, что номер введён с ошибкой
Избежать лишних запросов в базу
Снизить нагрузку на сервис и количество фейлов при операций
По сути, Луна — это быстрый фильтр, который не даёт системе тратить ресурсы на заведомо невозможный номер.
Пример с вымышленным номером:
4539 1488 0343 6467
Переворачиваем цифры справа налево
7 6 4 6 3 4 3 0 8 8 4 1 9 3 5 4
Удваиваем каждую вторую цифру:
Первая цифра (7) остаётся как есть.
Вторая (6) удваивается и становится 12.
Вся последовательность получается такой:
7, 12, 4, 12, 3, 8, 3, 0, 8, 16, 4, 2, 9, 6, 5, 8
Все значения больше 9 уменьшаем на 9
(12 → 3, 12 → 3, 16 → 7)
Итоговый ряд:
7, 3, 4, 3, 3, 8, 3, 0, 8, 7, 4, 2, 9, 6, 5, 8
Складываем все числа
Сумма: 80
Проверка
Алгоритм Луна проходит, потому что сумма кратна 10 (заканчивается на 0).
Итог
Алгоритм Луна применяют не только в банковских картах, но и в любых идентификаторах, где важно быстро ловить ошибки. Его задача убедиться, что номер правильно сформирован перед обработкой, чтобы избежать лишних ошибок и не тратить ресурсы впустую.
👉 @PythonPortal
Post #5198
9.18K

- 🔥 77
- ❤ 18
- 🤔 7
- 👍 5
- 💊 2