说明
用素数作为<mark>散列表的容量</mark>,有助于减少hash冲突的概率。
而且<mark>扩容</mark>需要用到素数。
因此,讨论素数的生成、判断
判断素数 isPrime()
https://blog.csdn.net/LawssssCat/article/details/102921354
/** 方法1 */
public boolean isPrime(long n) {
if(n<2) { //排除负数
return false ;
}else if(n>2) {
long len = (long) Math.sqrt(n);
for(long i=2 ; i<=len ; i++) {
if(n%i==0) {
return false;
}
}
}
return true;
}
/** * 方法2 : 位运算,快一点点 */
public boolean isPrime(long n) {
if(n<2) {
return false;
}else if(n>2) {
if(((n^0)&1) == 0) { //偶数
return false;
}
long len = (long) Math.sqrt(n);
for (int i = 3; i < len; i++) {
if(n%i==0 ) {
return false;
}
}
}
return true;
}
生成素数 nextPrime()
在网上实在找不到更好的方法。(有一个,看不懂)
以后看到在贴上来吧。。
public long nextPrime(long n) {
if(n<2) {
return 2 ;
}
while(!isPrime(++n)) {
}
return n ;
}