Der Grund, warum Primzahlen verwendet werden, besteht darin, Kollisionen zu minimieren, wenn die Daten bestimmte Muster aufweisen.
Das Wichtigste zuerst: Wenn die Daten zufällig sind, ist keine Primzahl erforderlich. Sie können eine Mod-Operation für eine beliebige Zahl ausführen und haben für jeden möglichen Wert des Moduls die gleiche Anzahl von Kollisionen.
Aber wenn Daten nicht zufällig sind, passieren seltsame Dinge. Betrachten Sie beispielsweise numerische Daten, die immer ein Vielfaches von 10 sind.
Wenn wir Mod 4 verwenden, finden wir:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Von den 3 möglichen Werten des Moduls (0,1,2,3) haben also nur 0 und 2 Kollisionen, das ist schlecht.
Wenn wir eine Primzahl wie 7 verwenden:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
etc
Wir stellen auch fest, dass 5 keine gute Wahl ist, aber 5 eine Primzahl ist. Der Grund dafür ist, dass alle unsere Schlüssel ein Vielfaches von 5 sind. Dies bedeutet, dass wir eine Primzahl wählen müssen, die unsere Schlüssel nicht teilt. Die Wahl einer großen Primzahl ist normalerweise genug.
Der Grund, warum Primzahlen verwendet werden, besteht darin, den Effekt von Mustern in den Schlüsseln bei der Verteilung von Kollisionen einer Hash-Funktion zu neutralisieren.