Alasan mengapa bilangan prima digunakan adalah untuk meminimalkan tabrakan ketika data menunjukkan beberapa pola tertentu.
Hal pertama yang pertama: Jika data acak maka tidak perlu untuk bilangan prima, Anda dapat melakukan operasi mod terhadap nomor apa pun dan Anda akan memiliki jumlah tabrakan yang sama untuk setiap kemungkinan nilai modulus.
Tetapi ketika data tidak acak maka hal-hal aneh terjadi. Misalnya pertimbangkan data numerik yang selalu kelipatan 10.
Jika kami menggunakan mod 4, kami menemukan:
10 mod 4 = 2
20 mod 4 = 0
30 mod 4 = 2
40 mod 4 = 0
50 mod 4 = 2
Jadi dari 3 kemungkinan nilai modulus (0,1,2,3) hanya 0 dan 2 yang akan bertabrakan, itu buruk.
Jika kita menggunakan bilangan prima seperti 7:
10 mod 7 = 3
20 mod 7 = 6
30 mod 7 = 2
40 mod 7 = 4
50 mod 7 = 1
dll
Kami juga mencatat bahwa 5 bukan pilihan yang baik tetapi 5 adalah prima alasannya adalah bahwa semua kunci kami adalah kelipatan 5. Ini berarti kita harus memilih bilangan prima yang tidak membagi kunci kami, memilih bilangan prima besar adalah biasanya cukup.
Jadi keliru di sisi berulang-ulang alasan bilangan prima digunakan adalah untuk menetralisir efek pola dalam kunci dalam distribusi tabrakan fungsi hash.