线性筛质数

#include<iostream>
using namespace std;
const int N=10000001;
int prim[N],cnt;
bool st[N];
int primcnt(int n){
    for(int i=2;i<=n;i++){
        if(!st[i])prim[cnt++]=i;
        for(int j=0;prim[j]<=n/i;j++){
            st[prim[j]*i]=true;
            if(i%prim[j]==0)break;
        }
    }
    return cnt;
}
int main(void){
    int n;
    cin>>n;
    cout<<primcnt(n)<<endl;
    return 0;
}

posted @ 2019-07-19 13:59  YF-1994  阅读(122)  评论(0编辑  收藏  举报