排除校验位,luhn算法的最小长度是多少?
我的想法是它适用于任何大于2位的数字(同样,不包括校验位)。
我问的原因是: 如果我从右到左遍历数字中的所有数字。 这导致我的luhn验证中的i%2 == 0(用于在数字中找到替代位置)如果数字是3位数或更小(例如125 - 在纸上似乎是有效数字),则会失败
显然我可以将我的条件从i%2 == 0更改为其他内容,但如果它不是算法的正确行为,那么很高兴知道。
答案 0 :(得分:4)
Luhn的算法适用于两位数。如果单个数字是错误的,则会发出警告,并且一些(但不是全部)数字被转置的情况会发出警告。哎呀,理论上它可以用一位数,但这不是很有用。您可以通过修复一个数字,然后更改另一个数字并验证另一个数字的每个值将给出唯一的“校验和”来自己查看。但是,只有两位数字,只需添加数字mod 10就可以获得相同的属性,但它不会捕获任何转置错误。