Luhn

Luhn

简单

说明

给定一个数字,判断它是否符合 Luhn 公式,即是否有效。

Luhn 算法是一种简单的校验和公式,用于验证各种标识号码,比如信用卡号和加拿大社会保险号。

任务是检查给定的字符串是否有效。

验证数字

长度不超过 1 的字符串无效。 输入中允许有空格,但在检查前应当先把空格去掉。 所有其他非数字字符都不允许出现。

示例 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 整除,这个数字就是有效的。 这个数字是有效的!

示例 2:无效的信用卡号

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 整除,所以这个数字无效。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
CFML Exercism

准备好开始 Luhn 了吗?

注册 Exercism,借助 51 个练习 和真人导师指导,学习并掌握 CFML,全部免费。

深入探索 Luhn!

我们会探索 8 个不同版本的 Luhn,从一个非常简洁的 Ruby 实现开始,看看一些命令式和函数式的写法,最后是一个让 Erik 和 Jeremy 花了不少功夫才破译的 SQLite 版本!