#define MAXN 100000005
using namespace std;
bool mark[MAXN];
//bitset<MAXN> mark;
int n;
int prime[MAXN];
int cnt = 0;
//void ola(int n){
// //int cnt =0 ;
//// memset(mark,0,sizeof (mark));
//// mark[0]=mark[1]=1;
// for (int i = 2;i < n;i++){
// if (mark[i]==0){
// prime[cnt++]=i;
// }
// for (int j = 0;j < cnt && prime[j]*i < n;j ++){
// mark[i*prime[j]]=1;
// if (i%prime[j]==0){
// break;
// }
// }
// }
// //return cnt;//素数个数
//}
int main (){
scanf ("%d",&n);
for (int i = 2;i < n;i++){
if (mark[i]==0){
prime[cnt++]=i;
}
for (int j = 0;j < cnt && prime[j]*i < n;j ++){
mark[i*prime[j]]=1;
if (i%prime[j]==0){
break;
}
}
}
printf ("%d",cnt);
return 0;
}
wa了#8,根据数据加上
然后AC了