在全球验证局,你刚刚接到了一项关键任务。整座城市里,从网上购物到安全登录,无数操作都依赖各种数字标识符的准确性,比如信用卡号、银行账号、交易代码和追踪编号。Luhn 算法是一种简单的校验和公式,用来确保这些号码有效且没有错误。
一批标识符刚刚送到了你的桌上。它们必须全部通过 Luhn 测试,才能确认是合法的。只要有一个没通过,就会被标记为无效,从而防止错误和欺诈,比如错误的交易或未经授权的访问。
你能确保这件事做得对吗?许多服务的可靠性都取决于你。
根据 Luhn 公式,判断一个信用卡号是否有效。
这个号码会以字符串的形式提供。
长度不超过 1 的字符串无效。输入中允许有空格,但在检查前应当先把空格去掉。所有其他非数字字符都不允许出现。
4539 3195 0343 6467
Luhn 算法的第一步是从右往左,把每隔一位的数字翻倍。我们要翻倍的是
4539 3195 0343 6467
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ (double these)
如果翻倍后的结果大于 9,就从乘积中减去 9。翻倍后的结果如下:
8569 6195 0383 3437
然后把所有数字相加:
8+5+6+9+6+1+9+5+0+3+8+3+3+4+3+7 = 80
如果和能被 10 整除,这个数字就是有效的。这个数字是有效的!
8273 1232 7352 0569
从右往左,把每隔一位的数字翻倍
7253 2262 5312 0539
把各位数字相加
7+2+5+3+2+2+6+2+5+3+1+2+0+5+3+9 = 57
57 不能被 10 整除,所以这个数字无效。