2020-04-30
描述
使用埃拉托色尼筛选法(the Sieve of Eratosthenes),根据给定的数字生成质数。
提示
- 生成一个从
2到给定数字的数组arr - 生成一个从
2到给定数字的平方根的数组numsTillSqroot - 使用
Array.prototype.filter()过滤掉arr中可以被numsTillSqroot所整除或相等数字
代码
const primes = num => {
let arr = Array.from({ length: num - 1 }).map((x, i) => i + 2),
sqroot = Math.floor(Math.sqrt(num)),
numsTillSqroot = Array.from({ length: sqroot - 1 }).map((x, i) => i + 2);
numsTillSqroot.forEach(x => (arr = arr.filter(y => y % x !== 0 || y === x)));
return arr;
};
示例
求小于 10 的质数:
primes(10); // [2,3,5,7]
ME!
链滴