primes - 生成质数数组
优质
小牛编辑
127浏览
2023-12-01
使用 Eratosthenes 筛选法生成达到给定数的质数。
生成一个从 2
开始到给定数的数组。 使用 Array.filter()
过滤掉能被从 2
开始到给定数的任意值整除的数。
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; };
primes(10); // [2,3,5,7]
注:
埃拉托斯特尼筛选法(希腊语:κόσκινον Ἐρατοσθένους,英语:sieve of Eratosthenes ),简称埃氏筛,是一种简单且年代久远的筛法,用来找出一定范围内所有的素数。所使用的原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。埃拉托斯特尼筛法是列出所有小素数最有效的方法之一,其名字来自于古希腊数学家埃拉托斯特尼,并且被描述在尼科马库斯所著Introduction to Arithmetic中。-维基百科