Luhn test of credit card numbers: Difference between revisions

Content added Content deleted
(→‎{{header|MATLAB}}: simpler solution is available)
(→‎{{header|C}}: simplify rule 3)
Line 253: Line 253:
unsigned int evenSum = 0;
unsigned int evenSum = 0;
int i;
int i;
const int m[] = {0,2,4,6,8,1,3,5,7,9}; // mapping for rule 3


for (i = strlen(cc) - 1; i >= 0; --i) {
for (i = strlen(cc) - 1; i >= 0; --i) {
Line 259: Line 260:
oddSum += digit;
oddSum += digit;
} else {
} else {
evenSum += digit / 5 + (2 * digit) % 10;
evenSum += m[digit]; // rule 3
}
}
isOdd = !isOdd;
isOdd = !isOdd;