java - luhn 算法适用的最小长度是多少?

标签 java algorithm

不包括校验位,luhn 算法将处理的最小长度数字是多少?

我的想法是,它适用于任何大于 2 位数字的数字(同样,不包括校验位)。

我问的原因是这样的: 如果我从右到左迭代数字中的所有数字。 如果数字是 3 位或更小(例如 125——在纸面上似乎是一个有效的数字),这会导致我的 luhn 验证中的 i%2 == 0 (用于查找数字中的替代位置)失败

显然,我可以将条件从 i%2== 0 更改为其他值,但如果这不是算法的正确行为,那么很高兴知道。

最佳答案

卢恩的算法适用于两位数。如果单个数字错误以及某些(但不是全部)数字调换的情况,它会发出警告。哎呀,理论上它可以处理一位数字,但这不是很有用。您可以通过固定一个数字,然后更改另一个数字并验证另一个数字的每个值是否会给出唯一的“校验和”来亲自查看。然而,如果只有两位数字,只需添加数字 mod 10 就会得到相同的属性,但不会捕获任何换位错误。

关于java - luhn 算法适用的最小长度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150554/

相关文章:

java - 超时后自动关闭对话框并取消响应

java.lang.NoSuchFieldError : DEF_CONTENT_CHARSET from linux terminal with twilio 错误

algorithm - 多台机器利润递减的高效调度作业

algorithm - 压缩 Base 62(0-9a-zA-Z) 编码字符串

javascript - 使用 Google Translate API 进行翻译时排除 HTML 标签

java - 在 android jni 中执行 shell 时出现以下错误

java - Iterator.hasNext() 似乎不会对列表中的最后一项返回 false

algorithm - 括号组合的时间复杂度

c - 其间有代码的 for 循环的可变数量

最短路径同时最少传输的算法