It's a simple problem;
The portal:http://acm.tju.edu.cn/toj/showp4118.html
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
int f[3000005];
int num[1000005];
void Pre_deal(){
memset(f,0,sizeof(f));
memset(num,0,sizeof(num));
for(int i=1;i<=1000000;i++){
if(!f[i])f[2*i+2] = 1;
}
for(int i=1;i<=1000000;i++){
num[i] = num[i-1] + 1 - f[i];
}
}
void Deal_with(){
int n;
while(~scanf("%d",&n)){
printf("%d\n",num[n]);
}
}
int main(void){
Pre_deal();
Deal_with();
return 0;
}