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]