我有一个关于哈希表大小和模块化哈希的问题。我所指的散列算法如下: hash_key%table_size = array_index。 我正在阅读算法教科书,其中给出了以下建议:
如果表大小不是素数,则可能是键的所有位在确定array_index时不起作用的情况。
任何人都可以通过一个例子来解释这意味着什么吗?
答案 0 :(得分:4)
您想要避免的是常见因素。有一个定理表明每个数字都可以表示为素数的乘积。
因此,如果你有素数作为mod。您不会在该部门中分享任何因素。
说A%30,所以2,3和5中的任何倍数将分享该除法中的因子,并且该因子在该除法中将是无用的。250/30 = 50/6 = 25/3
您希望尽量减少无用因素。