The Luhn algorithm (also known as modulo-10) is used to check that a credit card number looks valid. In other words, if the number passes the Luhn check then it is possibly a valid credit card - numbers that fail the check can never be valid.
Luhn.java - Luhn algorithm and test harness in Java
public boolean isValidNumber(final String number) { int sum = 0; boolean alternate = false; for (int i = number.length() - 1; i >= 0; i--) { int n = Integer.parseInt(number.substring(i, i + 1)); if (alternate) { n *= 2; if (n > 9) { n = (n % 10) + 1; } } sum += n; alternate = !alternate; } return (sum % 10 == 0); }
luhn.c - Luhn algorithm and test harness in C
int isValidNumber(const char *number) { int n, i, alternate, sum; if (!number) return 0; n = strlen(number); if (n < 13 || n > 19) return 0; for (alternate = 0, sum = 0, i = n - 1; i > -1; --i) { if (!isdigit(number[i])) return 0; n = number[i] - '0'; if (alternate) { n *= 2; if (n > 9) n = (n % 10) + 1; } alternate = !alternate; sum += n; } return (sum % 10 == 0); }
Last updated: 27th January 2005