不包括校验位,luhn 算法将处理的最小长度数字是多少?
我的想法是,它适用于任何大于 2 位数字的数字(同样,不包括校验位)。
我问的原因是这样的: 如果我从右到左迭代数字中的所有数字。 如果数字是 3 位或更小(例如 125——在纸面上似乎是一个有效的数字),这会导致我的 luhn 验证中的 i%2 == 0 (用于查找数字中的替代位置)失败
显然,我可以将条件从 i%2== 0 更改为其他值,但如果这不是算法的正确行为,那么很高兴知道。
最佳答案
卢恩的算法适用于两位数。如果单个数字错误以及某些(但不是全部)数字调换的情况,它会发出警告。哎呀,理论上它可以处理一位数字,但这不是很有用。您可以通过固定一个数字,然后更改另一个数字并验证另一个数字的每个值是否会给出唯一的“校验和”来亲自查看。然而,如果只有两位数字,只需添加数字 mod 10 就会得到相同的属性,但不会捕获任何换位错误。
关于java - luhn 算法适用的最小长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150554/