Luhn 算法

Luhn 算法,也称为模数 10 公式、模 10 算法、LUHN 校验、模 10 校验、检验码算法,又称“求和校验码”,是一种根据银行卡号码判断其正确性的算法。它是由美国人费尔南多 · 卢恩(F. D. Lun)发明的,由 IBM 提出的,1960 年代末发展起来的。

原理

Luhn 算法是一种检测银行卡号码正确性的算法。它的原理是:将银行卡号码从右到左依次编号,从右端第一个数字开始,偶数位乘以 2,如果乘积为两位数,则将其减去 9,将所有乘积相加,然后用总和除以 10,若余数为 0,则该银行卡号码正确,否则该银行卡号码不正确。

校验过程

Luhn 算法可以用来检验银行卡号码的正确性。下面以银行卡号码“4367421234567890”为例,来演示 Luhn 算法的校验过程:

1. 将银行卡号码从右到左依次编号,从右端第一个数字开始,编号如下:

0 1 2 3 4 5 6 7 8 9
JavaScript

2. 将偶数位乘以 2,如果乘积为两位数,则将其减去 9,得到的结果如下:

0 2 4 6 8 10 6 14 8 18
JavaScript

3. 将所有乘积相加,得到总和为 80。

4. 用总和 80 除以 10,余数为 0,说明该银行卡号码正确。