13 容量质数
容量最好是质数:
虽然在链地址法中将容量设置为质数,没有在开放地址法中只要,但是其实链地址法中质数作为容量也会更利于数据的均匀分布,所以我们还需要完成这一步。
质素的特点:
质数也称为素数。
质数表示大于1的自然数中,只能被1和自身整出的数。
function isPrime(num) {
for(let i = 2;i<num;i++){
if(num % i == 0) return false;
}
return true;
}
更高效的质数判断:
- 一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sprt(n),一个大于等于sprt(n)。
- 比如16可以被分别,那么是28,小于sqrt(16),就是为,8大于4,而44都是等于sqrt(n) ,只需要判断到小于等于这个n的平方跟即可,因为较小的因数没有,较大的肯定也没有(不存在的)。
- 所以我们遍历到等于sqrt(n)即可。
判断是否为质数
function isPrimeSqrt(num) {
// 1.排除 1
if (num == 1) return false;
// 2.获取平方根
let temp = parseInt(Math.sqrt(num));
// 3.循环判断-能被整除则非素数返回 false
for (let i = 2; i <= temp; i++) {
if (num % i == 0) return false;
}
return true;
}
不是则++到最近的质数位置
// 获取质数的方法
HashTable.prototype.getPrime = function (num) {
let n = num;
while (!this.isPrimeSqrt(n)) {
n += 1;
}
return n;
}
