质数筛
素数判断
素数判断
1、最简单的判断质数的方式,便是从 $2 \to x$ 依次尝试,如果尝试到有因子,则其不是质数。需要特判 $2$ 为质数、小于 $2$ 的都不是质数(质数范围是大于 $1$ 的自然数)
2、朴素筛法可以简单进行优化,实际需要尝试的因子最多只到 $\sqrt{x}$ 。比如判断 $25$ 时,易知只需要判断 $2 \to 5$ 有没有因子,因此不需要重复判断 $\gt \sqrt{x}$ 的因子。提前使用变量记录 $\sqrt{x}$ ,可以避免循环中重复计算sqrt
的开销
3、但假如要计算 $2 \to 10^6$ 中有多少个质数时,只使用素数判断的效率很低($10^6$ - $218ms$),其额外判断了大量无用的数据,所以需要效率更高的筛法