这个筛法用于预处理区间[l~r]之间的素数集合,代码比较简单,现贴出来
#include<bits/stdc++.h>
using namespace std;
int main(){
for (int i = 2; i <= n; ++i) {
is_prime[i] = 1;
}
for (int i = 2; i*i <= n; ++i) {///sqrt(n)作为访问结束点
if (is_prime[i]) {
for (int j = i * i; j <= n; j +=i) {///从i*i开始筛,以+=i作为递增d
is_prime[j] = 0; ///如果改成set存储的话,访问你懂得
///筛掉的是下标j
}
}
}
return 0;
}