素数筛模板
什么是素数
素数就是除了1和本身,不能被其他数整除的数
模板
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000000
int c=0;//记录素数数组内素数个数
int prime[MAXN];//保存素数的数组
bool vis[MAXN];//判断某个数是否已经被访问
void euler(int n) {
for(int i = 2; i <= n; ++i) { //老规矩,遍历区间
if(vis[i] == false) //如果这个数未被访问,则是素数
prime[++c] = i; //将素数保存在素数数组里面,计数+1
//下面for循环及里面的语句才是这个算法的精髓
for(int j = 1; j <= c && i * prime[j] <= n; ++j) {
vis[i * prime[j]] = true;
if (i % prime[j] == 0)//这句话最重要,精髓!!!
break;
}
}
}
int main() {
euler(MAXN);
for(int i=1;i<=100;i++){
cout<<prime[i]<<endl;
}
}
理解看这个这个大佬的博客素数筛(彻底理解)