几个月前,我为大家普及了冷知识:如何验证一本书的ISBN号。今天我再给大家普及一个冷知识:如何验证信用卡号?这也是来自一个编程做题网站。
比如我们有这么一个信用卡号:4417 1234 5678 9113(这个当然不是我的,是网上随便搜来的。你只要知道4开头的信用卡是Visa卡)。
信用卡号的验证很简单:
- 从右到左,第2/4/6/8……(偶数位)的数字乘以2。
- 用上面的卡号做例子,就是对
4/1/1/3/5/7/9/1这几个数字乘以2,得到8/2/2/6/10/14/18/2。
- 用上面的卡号做例子,就是对
- 如果第1步中得到的数字大于10,那么就减去9,于是得到:
8/2/2/6/1/5/9/2。 - 将这些数字和原来卡号中奇数位的数字相加:8+4+2+7+2+2+6+4+1+0+6+1+4+8+1+8+1+2+3 = 70
- 如果这个和(
70)是10的倍数,那么就是一个合法的卡号,否则就不对了。
顺便提一句,这个算法有个专门的名称:Luhn算法。有兴趣的读者可以自己找一下详细的说明。
我编了一个小小的Dart程序:


Leave a Reply