У меня вопрос о алгоритме Луна. Алгоритм luhn (mod 10) для обнаружения ошибок и контрольных сумм. Например цифр, как визы, кредитные карты и т.д.Почему алгоритм Луна умножается на 2?
, например, мы имеем цифры: цифр 1 2 3 4 5 6 7 8 9 3
Шаг 1: Умножить значение альтернативных цифр на 2, начиная от второй самой правой цифры. пример: Цифра 1 2 3 4 5 6 7 8 9 3 Умножителя Х2 Х2 Х2 Х2 Х2
Шаг 2: Добавить все отдельные цифры вышеуказанных продуктов совместно с ООН удвоением цифр от оригинала. Если больше 10, добавьте или вычтите с 9. номер.
Пример:
Digit 1 2 3 4 5 6 7 8 9 3
Multiplier X2 X2 X2 X2 X2
Result 2 2 6 4 10 6 14 8 18 3
1+0 1+4 1+8
Sum 2+ 2+ 6+ 4+ 1+ 6+ 5+ 8+ 9+ 3 = 40
Шаг 3: Если общая по модулю 10 равен 0, то это число действует в соответствии с формулой Luhn; в противном случае это недействительно. пример. 40 mod 10 = 0 so valid, if not 0 so not valid.
Вопрос в том, почему в шаге 2 используется Multiply на 2? Какая причина? (с просьбой указать ссылку или документы). спасибо