Discuss
/
JavaScript
/
素数求取方法这个就可以了。
素数求取方法这个就可以了。
Topic source牛牛牛,实测这个方法比如下传统计数快6倍。
arr.filter(function(element, index, self){
if (element == 1) {return false;}
for( var i = 2; i <= index; i++){
if( ele % i == 0) {
return false;
}
}
return true;
})
还有更高效点的
return arr.filter(x=>{
if (x == 1) {
return false;
}
let result = true;
let halfNum = x / 2;
for (let i = 2; i <= halfNum; i++) {
if (x % i== 0) {
result = false;
break;
}
}
return result;
})
- 1
根号二Sir
return arr.filter(function(ele){
if (ele == 1) {return false;}
for( var i = 2; i <= Math.sqrt(ele); i++){
if( ele % i == 0) {
return false;
}
}
return true;
});
计算到平方根就可以,为了减少计算次数(优化速度),如果在for循环中已经判断出这个数不是素数就可以返回了,不需要一直循环到平方根数。(count计数器的方法要不得)