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());


    }
}