素数个数
题目描述
求 1,2,⋯,N 中素数的个数。
输入格式
一行一个整数 N。
输出格式
一行一个整数,表示素数的个数。
样例 #1
样例输入 #1
10
样例输出 #1
4
提示
对于 40% 的数据,1≤N≤106。
对于 80% 的数据,1≤N≤107。
对于 100% 的数据,1≤N≤108。
#include<bits/stdc++.h>
using namespace std;
int n,t;
int prime[1000000];
bool y[10000000];
void su(){
memset(y,true,sizeof(y));
y[1]=false;
for(int i=2;i<=n;i++){
if(y[i]) prime[++t]=i;
for(int j=1;i*prime[j]<=n;j++){
y[i*prime[j]]=false;
if(i%prime[j]==0) break;
}
}
}
int main(){
scanf("%d",&n);
su();
cout<<t;
return 0;
}