线性筛质数
#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; }