好久没写博客了,今天翻到了数组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]