IBAN controle

IBAN controle op groot rekeningnummer

Het IBAN bankrekeningnummer (International Bank Account Number) bevat twee cijfers als controlegetal, dat d.m.v. een modulo 97 berekening kan worden gecontroleerd. Het iban nummer waarover deze berekening plaatsvindt is echter zo groot, dat dit niet in een standaard data type past.

Met de volgende strategie kan het nummer gesplitst worden, zodat de modulo-berekening gewoon kan worden uitgevoerd:

  • Deel het nummer op in kleinere nummers en bereken de modolo van deze kleinere nummers.
  • Voeg dit resultaat toe en herhaal het proces totdat er geen modulo-resultaat wordt gevonden.

Stel dat je de volgende berekening moet uitvoeren nBig % a:

  • Neem een hanteerbaar gedeelte (stel x) van het grote getal (nBig) and trek dit af van nBig (nBig = nBig - x).
  • Bereken de mod van x (mod = x % a).
  • Voeg dit eindresultaat toe aan nBig (nBig = nBig + mod).

Op deze manier wordt het grote getal kleiner gemaakt, zonder het resultaat van het uiteindelijke antwoord te beinvloeden. Eerst geef ik een voorbeeld met een klein nummer, om de logica te begrijpen.

Neem bijvoorbeeld 27 % 8:
  • x = 17.
  • nBig = nBig - x = 27-17 = 10.
  • mod = x % a = 17 % 8 = 1
  • nBig = nBig + mod = 10 + 1 = 11

nBig is verkleind van 27 naar 11 zonder het eindresultaat te beinvloeden, in dit geval 3.

IBAN nummer controle praktijkvoorbeeld

Hoe vinden we de modulo van grote nummers?
Pas de logica van IBAN controle op groot rekeningnummer toe en het probleem wordt eenvoudig opgelost:

De input is:
nBig: Dit is het grote getal (bijvoorbeeld, 123456789033333333335555555555)
a: Integer (bijvoorbeeld, 320)


Om de berekening nBig % a uit te voeren:


Stap 1:
Haal de eerste 10 cijfers van nBig,
in dit geval tmp = 1234567890 en nBig = 33333333335555555555.
Bereken de mod van tmp:
mod = tmp % a = 210
Voeg dit vooraan toe aan nBig:
nBig = 21033333333335555555555


Stap 2:
tmp = 2103333333 en nBig = 3335555555555
mod = tmp % a = 213
nBig = 2133335555555555


Stap 3:
tmp = 2133335555 en nBig = 555555
mod = tmp % a = 195
nBig = 195555555


Stap 4:
tmp = 195555555 en nBig = ""
mod = tmp % a = 35

Het antwoord is 35.