寻找数组中的质数方法

好久没写博客了,今天翻到了数组find方法,看到有找质数的算法,就整理一下。

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) {
      return false;
    }
  }
  return element > 1;
}

刚开始看是一脸懵逼的,尤其是   element % start++ < 1 这里,还去找了一下运算符的优先级

++是最高的,看起来也头大,再拆分一下

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start < 1) {
      return false;
    } else {
        start ++
    }
  }
  return element > 1;
}

这样应该就好理解了。找到当前元素开平方根,如果开始元素小于这个平方根就去判断取余数是否小于1,小于1则表示能被整除,就不是质数,否则就把开始元素加1再进行判断。

最后测试: [4, 5, 6, 7, 8, 9].filter(isPrime) // [5,7] 

posted on 2021-03-30 11:18  薛将军  阅读(362)  评论(0编辑  收藏  举报

导航