Tag: luhn

使用luhn算法validation信用卡号

我对以下编程任务有疑问。 信用卡号码遵循某些模式。 信用卡的长度必须介于13到16位之间。 它必须从: •4张Visa卡 •5张万事达卡 •美国运通卡37张 1954年,IBM的Hans Luhn提出了一种validation信用卡号的算法。 该算法可用于确定是否正确输入了卡号或扫描仪是否正确扫描了信用卡。 几乎所有信用卡号都是在此有效性检查后生成的,通常称为Luhn检查或模数10检查,可以描述如下。 例如,请考虑卡号4388576018402625。 从右到左加倍每秒。 如果数字加倍会产生2位数字,请将两位数相加以得到一位数字。 2 x 2 = 4 2 x 2 = 4 4 x 2 = 8 1 x 2 = 2 6 x 2 = 12(1 + 2 = 3) 5 x 2 = 10(1 + 0 = 1) 8 x 2 […]

如何实现Luhn算法?

我正在尝试创建一个程序来validation基于luhn算法的10到12位长数字序列,但是我的程序一直告诉我每个数字都是无效的,即使它们不是。 这个数字应该是有效的,但我的代码不这么认为: 8112189876 这个号码不应该是有效的,我的程序同意,因为它认为每个号码都是无效的: 8112189875 这是我的代码: static void luhn(){ System.out.print(“Enter number to validate:\n”); String pnr = input.nextLine(); int length = pnr.length(); int sum = 0; for (int i = 1, pos = length – 1; i 9) product -= 9; sum+= product; boolean valid = (sum % 10 == 0); if (valid){ System.out.print(“Valid!\r”); } else{ […]

使用Luhn算法检查信用卡有效性

我尝试使用Luhn算法检查信用卡的validation,该算法的工作方式如下: 从右到左加倍每秒。 如果数字加倍会产生两位数字,请将两位数相加得到一位数字。 2 * 2 = 4 2 * 2 = 4 4 * 2 = 8 1 * 2 = 2 6 * 2 = 12(1 + 2 = 3) 5 * 2 = 10(1 + 0 = 1) 8 * 2 = 16(1 + 6 = 7) 4 * 2 = 8 […]