package 微众;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main2 {
public static void main(String[] args) {
//求指定范围内的素数和由素数组成幂次数
Set <Integer> set = new HashSet <>();
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
//使用标记法
boolean [] isPrime=new boolean[n+1];
for(int i=2;i<=n;i++){
isPrime[i]=true;
}
for(int i=2;i*i<=n;i++){
if(!isPrime[i]){
continue;
}
for(int j=i*i;j<=n;j+=i){
isPrime[j]=false;
}
}
//统计素数
for(int i=2;i<=n;i++){
if(isPrime[i]){
set.add(i);
//对该数进行幂次运算
for(int j=1;Math.pow(i,j)<=n;j++){
//将幂次装入
set.add((int) Math.pow(i,j));
}
}
}
System.out.println(set.size());
}
}