埃氏筛,快速筛素数
算法描述
要筛出
范围内的素数,我们只需要将 范围内的素数的所有 的倍数删除即可。
因为素数是递增的,事实上只需要从
开始筛,就能保证后面遇到的未被删除的第一个数都是素数
实现
1 2 3 4 5 6 7
| int n; vector<bool> isPrime(n + 1, true); isPrime[0] = isPrime[1] = false; for (int i = 2; i * i <= n; i++) { if (!isPrime[i]) continue; for (int j = i * i; j <= n; j += i) isPrime[j] = false; }
|