Waarom neemt men altijd 97 als controlegetal van een rekeningnummer?

Willy, 63 jaar
26 oktober 2011

Als ik het goed heb, wordt het controlegetal van een rekeningnummer gevonden als rest van de deling van de 10 eerdere cijfers door 97 (modulo 97). Nu is 97 het grootste priemgetal van 2 cijfers. Is er een reden waarom men een priemgetal neemt, en niet bv. 98 of 99?

Antwoord

Beste Willy,


De twee controlecijfers die aan het tiencijferig rekeningnummer worden toegevoegd worden inderdaad berekend door de rest te nemen bij deling door 97.

Deze code is sterk indien de "typische fouten" die mensen kunnen maken, gedetecteerd worden door de controlegetallen die eraan toegevoegd worden.

Typische fouten zijn:
- Een cijfer (of meerdere cijfers) verkeerd opschrijven.
- Een cijfer uit de code verwisselen met een ander cijfer.

Indien we als controlegetal een tweecijferig getal willen toevoegen aan ons getal, door het nemen van de rest bij deling door een getal n, dan nemen we n best zo groot mogelijk, zodat we zoveel mogelijk fouten eruit kunnen halen.


We nemen een n die niet deelbaar is door 2 of door 5. Bovendien nemen we een n die groter is dan 10.

De kans dat indien er 1 fout wordt gemaakt, dat die fout gedetecteerd wordt, is dan 100%.

Dan is de kans dat twee fouten gedetecteerd worden, indien er twee fouten worden gemaakt worden gelijk aan n/100. Bij n=97 is dit dus 97%. Omwille van deze reden willen we n zo groot mogelijk hebben.

Indien n deelbaar is door 2 of door 5 wordt die kans echter kleiner. Het volgende voorbeeld laat dit zien.
Neem even aan dat n=98 en dat we dus de rest nemen bij deling door 98. In dat geval zullen 
987-2355058-90, 987-2350158-90 en 987-2359958-90 allemaal goede rekeningnummers zijn. De eerste tien cijfers van deze rekeningnummers vormen dan getallen die 4900 verschillen (4900=98*50 en dus deelbaar door 98). 
Je krijgt hier dus 2 of 3 getallen die dezelfde rest bij deling door 98 hebben, terwijl ze toch maar twee cijfers van elkaar verschillen. Dit komt omdat 2 een deler is van 98 en 2 een deler is van 10 (en dus van alle hogere machten van 10.

Waarom is 99 geen goede n? Het probleem bij 99 is dat die andere, veel voorkomende fout --het verwisselen van twee cijfers-- niet automatisch wordt gedetecteerd. Bij wijze van voorbeeld:

403-1094768-96 en 304-1094768-96 zijn allebei correcte rekeningnummers indien n=99. Het verwisselen van de 3 en de 4 hier wordt dus niet gedetecteerd. Dit is omdat het verschil van beide tiencijferige getallen gelijk is aan 4031094768-3041094768=990000000, een negennegentigvoud
In het algemeen: veronderstel dat het cijfer a op plaats k (van rechts te beginnen) verwisseld wordt met het cijfer b op plaats l (met l< k ): dan is het verschil tussen beide getallen

(a-b)*10k-1-(a-b)*10l-1=(a-b)*(10k-l-1)*10l-1.

Vermits de factor 10k-l-1 gelijk is aan 99 als k en l twee van elkaar verschillen, zal deze fout dus niet gedetecteerd worden aangezien de rest dezelfde is. Ook andere getallen die deler zijn van 10k-l-1 voor zekere k en l zijn daarom minder geschikt voor dit soort codes.

Deling door 97 geeft wel een sterke code. 2 en 5 zijn geen delers van 97 en 97 is geen deler van 9,99, 999, 9999, ... , 9999999999, zodat het verwisselen van twee cijfers steeds gedetecteerd zou worden door 97.

Over het algemeen zullen priemgetallen het steeds beter doen dan niet priemgetallen, maar toch is dit voor elke code afzonderlijk een beetje anders.

Met de beste groeten,

Stijn Symens

Reacties op dit antwoord

Er zijn nog geen reacties op deze vraag.

Enkel de vraagsteller en de wetenschapper kunnen reageren op een antwoord.

Zoek andere vragen

© 2008-2020
Ik heb een vraag wordt gecoördineerd door het
Koninklijk Belgisch Instituut voor Natuurwetenschappen