我们需要编写一个带数字(例如n)的JavaScript函数。
该函数应返回一个介于1和n之间的所有素数的数组。
第一步是创建一个与给定数字一样大的数组,并将其所有值初始化为true。数组索引将代表所有可能的质数,并且开头都为真。
然后,我们创建一个for循环,该循环从2迭代到给定数字的平方根。根据定义,任何整数的乘积都不能是素数,而0和1会被忽略,因为它们的可除性不会影响素数。
最后,我们可以简单地过滤掉所有错误值以得出所有素数。
const num = 100;
const findPrimes = (num = 10) => {
const numArr = new Array(num + 1);
numArr.fill(true);
numArr[0] = numArr[1] = false;
for (let i = 2; i <= Math.sqrt(num); i++) {
for (let j = 2; i * j <= num; j++){
numArr[i * j] = false;
}
}
return numArr.reduce((acc, val, ind) => {
if(val){
return acc.concat(ind);
}else{
return acc;
};
},[]);
};
console.log(findPrimes(num));输出结果
控制台中的输出将是-
[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 ]