为什么求模运算要用素数(质数)

Posted 项长老

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么求模运算要用素数(质数)相关的知识,希望对你有一定的参考价值。

好的HASH函数需要把原始数据均匀地分布到HASH数组里

原始数据不大会是真正的随机的,可能有某些规律,

比如大部分是偶数,这时候如果HASH数组容量是偶数,容易使原始数据HASH后不会均匀分布。
比如 2 4 6 8 10 12这6个数,如果对 6 取余 得到 2 4 0 2 4 0 只会得到3种HASH值,冲突会很多
如果对 7 取余 得到 2 4 6 1 3 5 得到6种HASH值,没有冲突

同样地,如果数据都是3的倍数,而HASH数组容量是3的倍数,HASH后也容易有冲突
用一个质数则会减少冲突的概率

 

参考

http://www.xuebuyuan.com/2177964.html

http://www.vvbin.com/?p=376

以上是关于为什么求模运算要用素数(质数)的主要内容,如果未能解决你的问题,请参考以下文章

1到100的质数表

求100以内的所有质数(素数) 要求:用VB的for语句写

Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)

两个质数相乘的积一定是啥数

在给定数字之后查找质数

质数(prime number)占自然数的百分比