给定一个数,判定它是否有效 Luhn 公式.
Luhn 算法,也称为“模 10”算法
这个Luhn 算法是一个简单的校验和公式,用于验证各种身份号码,如信用卡号码和加拿大社会保险号码.
任务是检查给定字符串是否有效.
长度为 1 或更小的字符串无效。在输入中允许使用空格,但在检查前,应清除空格。所有其他非数字字符都是不允许的.
4539 1488 0343 6467
LuHN 算法的第一步是,从右边开始每第二个数字加倍。我们要加倍的位
4_3_ 1_8_ 0_4_ 6_6_
如果加倍的数字值导致大于 9 的数字,则将此值减去 9。我们加倍的结果:
8569 2478 0383 3437
1_8_ => 2_7_
,8*2 - 9 = 7
然后把所有数字加起来:
8+5+6+9+2+4+7+8+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 整除,所以这个数字是无效的.
维基百科上的 LuHn 算法http://en.wikipedia.org/wiki/Luhn_algorithm