Il motivo per cui vengono utilizzati i numeri primi è di ridurre al minimo le collisioni quando i dati mostrano alcuni schemi particolari.
Per prima cosa: se i dati sono casuali, non è necessario un numero primo, puoi eseguire un'operazione mod contro qualsiasi numero e avrai lo stesso numero di collisioni per ogni possibile valore del modulo.
Ma quando i dati non sono casuali, accadono cose strane. Ad esempio, considera i dati numerici che sono sempre multipli di 10.
Se usiamo la mod 4 troviamo:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Quindi dai 3 possibili valori del modulo (0,1,2,3) solo 0 e 2 avranno collisioni, il che è negativo.
Se utilizziamo un numero primo come 7:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
eccetera
Notiamo anche che 5 non è una buona scelta ma 5 è il primo, il motivo è che tutte le nostre chiavi sono un multiplo di 5. Ciò significa che dobbiamo scegliere un numero primo che non divide le nostre chiavi, scegliendo un numero primo grande è di solito abbastanza.
Quindi, dal punto di vista dell'errore, di essere ripetitivi, il motivo per cui vengono utilizzati i numeri primi è quello di neutralizzare l'effetto dei modelli nei tasti nella distribuzione delle collisioni di una funzione hash.