埃氏筛
思想:任意整数的倍数都不是质数。
我们可以从 2 2 2开始,由小到大扫描每一个数,把它的倍数标记为合数。当扫描到一个数时,若它尚未被标记,则它不能被 2 → x − 1 2\to x-1 2→x−1之间的任何数整除,该数就是质数。
此外,我们可以发现, 2 2 2和 3 3 3都会把 6 6 6标记为合数。实际上,小于 x 2 x^2 x2的 x x x的倍数在扫描更小的数时就已经被标记过了。因此,我们可以对埃氏筛进行优化,对于每个数 x x x我们只需要从 x 2 x^2 x2开始,把之后的 x x x的倍数标记为合数即可。
核心代码
void prime(int n){