//方法一 定義
bool isPrime_1(int num)
{
int tmp=num-1;
for(int i=2;i<=tmp;i++)
if(num%i==0)
return 0;
return 1;
}
//方法二 定義
bool isPrime_2(int num)
{
int tmp=sqrt(num)+0.5;
for(int i=2;i<tmp;i++)
if(num%i==0)
return 0;
return 1;
}
//方法三 素數在6的左右
bool isPrime_3(int num)
{
if(num==2||num==3)
return 1;
if(num%6!=1||num%6!=5)
return 0;
int tmp=sqrt(num);
for(int i=5;i<tmp;i+=6)
if(num%i==0||num%(i+2)==0)
return 0;
}
//方法四 埃拉篩法
#include<iostream>
#include<cmath>
using namespace std;
bool p[100001];
int n,sn,tot;
int main()
{
cin>>n;
sn=sqrt(n+0.5);
for(int i=2;i<=n;i++) p[i]=true;
for(int i=2;i<=sn;i++)if(p[i])for(int j=i*i;j<n;j+=i)p[j]=false;
for(int i=2;i<=n;i++)if(p[i]) tot++;
cout<<tot<<endl;
return 0;
}
//方法五 歐拉篩選(線性篩選)