#include<bits/stdc++.h>
using namespace std;
const int N=1e8;
int prime[N+1];//存储素数
bool visit[N+1];//判断是否被筛掉
int n;
void euler_sieve(){
int cnt=0;
memset(visit,0,sizeof(visit));
memset(prime,0,sizeof(prime));
for(int i=2;i<=n;i++){
if(!visit[i]) prime[cnt++]=i;//第一个素数是prime[0]=2;
for(int j=0;j<cnt;j++){
if(i*prime[j]>n) break;
visit[i*prime[j]]=1; //用最小质因子去筛
if(i%prime[j]==0)break; //不是最小质因子则break
}
}
cout<<cnt;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
euler_sieve();
return 0;
}