La raison pour laquelle les nombres premiers sont utilisés est de minimiser les collisions lorsque les données présentent des modèles particuliers.
Tout d'abord: si les données sont aléatoires, il n'y a pas besoin d'un nombre premier, vous pouvez faire une opération de mod contre n'importe quel nombre et vous aurez le même nombre de collisions pour chaque valeur possible du module.
Mais lorsque les données ne sont pas aléatoires, des choses étranges se produisent. Par exemple, considérez les données numériques qui sont toujours un multiple de 10.
Si nous utilisons le mod 4, nous trouvons:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Donc à partir des 3 valeurs possibles du module (0,1,2,3), seuls 0 et 2 auront des collisions, ce qui est mauvais.
Si nous utilisons un nombre premier comme 7:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
etc
Nous notons également que 5 n'est pas un bon choix mais 5 est premier la raison en est que toutes nos clés sont un multiple de 5. Cela signifie que nous devons choisir un nombre premier qui ne divise pas nos clés, choisir un grand nombre premier est généralement assez.
Donc, si l'on se trompe du côté de la répétition, la raison pour laquelle les nombres premiers sont utilisés est de neutraliser l'effet des motifs dans les clés dans la distribution des collisions d'une fonction de hachage.