import java.util.*;

public class Euler347 {

    static List<Integer> sievePrimes(int limit) {
        boolean[] isComposite = new boolean[limit + 1];
        List<Integer> primes = new ArrayList<>();

        for (int i = 2; i <= limit; i++) {
            if (!isComposite[i]) {
                primes.add(i);
                if (i <= limit / i) {
                    for (int j = i * i; j <= limit; j += i) {
                        isComposite[j] = true;
                    }
                }
            }
        }
        return primes;
    }

    static long maxForPair(int p, int q, int limit) {
        if ((long) p * q > limit)
            return 0;

        long best = 0;
        for (long pa = p; pa <= limit / q;) {
            long value = pa * q;
            while (value <= limit) {
                best = Math.max(best, value);
                if (value > limit / q)
                    break;
                value *= q;
            }
            if (pa > limit / p)
                break;
            pa *= p;
        }
        return best;
    }

    public static String solve() {
        int limit = 10000000;
        List<Integer> primes = sievePrimes(limit);
        byte[] seen = new byte[limit + 1];
        long sum = 0;

        for (int i = 0; i < primes.size(); i++) {
            int p = primes.get(i);
            if ((long) p * 2L > limit)
                break;

            for (int j = i + 1; j < primes.size(); j++) {
                int q = primes.get(j);
                if ((long) p * q > limit)
                    break;

                long m = maxForPair(p, q, limit);
                if (m > 0 && seen[(int) m] == 0) {
                    seen[(int) m] = 1;
                    sum += m;
                }
            }
        }
        return String.valueOf(sum);
    }

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