Discuss / JavaScript / 素数求取方法这个就可以了。

素数求取方法这个就可以了。

Topic source

根号二Sir

#1 Created at ... [Delete] [Delete and Lock User]

    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计数器的方法要不得)

牛牛牛,实测这个方法比如下传统计数快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;
    })

Ryant_Chan

#3 Created at ... [Delete] [Delete and Lock User]

还有更高效点的

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

Reply