import java.util.ArrayList;
import java.util.List;

public class Euler694 {
    static List<Integer> primeSieve(int n) {
        boolean[] isPrime = new boolean[n + 1];
        for (int i = 2; i <= n; i++)
            isPrime[i] = true;

        for (int p = 2; (long) p * p <= n; ++p) {
            if (isPrime[p]) {
                for (long q = (long) p * p; q <= n; q += p) {
                    isPrime[(int) q] = false;
                }
            }
        }

        List<Integer> primes = new ArrayList<>();
        for (int i = 2; i <= n; ++i) {
            if (isPrime[i])
                primes.add(i);
        }
        return primes;
    }

    static long icbrt(long n) {
        long lo = 0;
        long hi = 2000000;
        while (lo + 1 < hi) {
            long mid = lo + (hi - lo) / 2;
            long cube = mid * mid * mid; // Fine since hi <= 2M, max cube is 8e18 < Long.MAX_VALUE
            if (cube <= n) {
                lo = mid;
            } else {
                hi = mid;
            }
        }
        return lo;
    }

    static long total;

    static void dfs(int idx, long cur, long n, List<Integer> primes) {
        total += n / cur;

        for (int j = idx; j < primes.size(); ++j) {
            long p = primes.get(j);
            long p3 = p * p * p;

            // If BigInteger is avoided, use division to check overflow:
            // Since cur * p3 > n <=> cur > n / p3
            if (cur > n / p3) {
                break;
            }

            long value = cur * p3;
            while (value <= n) {
                dfs(j + 1, value, n, primes);
                if (value > n / p) {
                    break;
                }
                value *= p;
            }
        }
    }

    public static String solve() {
        long n = 1000000000000000000L;
        long lim = icbrt(n);
        List<Integer> primes = primeSieve((int) lim);

        total = 0;
        dfs(0, 1L, n, primes);

        return Long.toString(total);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
