Der Luhn-Algorithmus oder die Luhn-Formel, auch bekannt als „Modulo 10“- oder „mod 10“-Algorithmus und als Double-Add-Double-Methode ist eine einfache Methode zur Berechnung einer Prüfsumme. Er wurde in den 1950er-Jahren von dem deutsch-amerikanischen Informatiker Hans Peter Luhn entwickelt, zum Patent angemeldet[1] und ist heute gemeinfrei und sehr weit verbreitet. Unter anderem dient der Luhn-Algorithmus der Verifizierung von Kreditkartennummern und kanadischen Sozialversicherungsnummern, ISINs und den siebenstelligen Kontonummern der Deutschen Bank und der Commerzbank sowie vieler Sparkassen. Er kommt auch bei den Nummern der Lokomotiven und Triebwagen nach dem Kennzeichnungsschema der UIC zum Einsatz, ebenso wie seit 1968 schon im Baureihenschema der Bundesbahn.
https://de.wikipedia.org/wiki/Luhn-Algorithmus
Pseudocode:
function checkLuhn(string number) { int sum := 0 int lng := length(number) int parity := lng modulo 2 for i from 0 to lng - 1 { int digit := toInteger(number[i]) if i modulo 2 = parity { digit := digit × 2 if digit > 9 digit := digit - 9 } sum := sum + digit } return (sum modulo 10) = 0 }Python:
def checkLuhn(number): sum = 0 parity = len(number) % 2 for i, digit in enumerate(int(x) for x in number): if i % 2 == parity: digit *= 2 if digit > 9: digit -= 9 sum += digit return sum % 10 == 0