我们需要编写一个带数字(例如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 ]