import java.util.Arrays;

public class Euler826 {

    static double FFormula(double n) {
        return (7.0 * n + 15.0) / (18.0 * (n + 1.0));
    }

    static int[] primesUpto(int n) {
        if (n < 2)
            return new int[0];
        boolean[] isPrime = new boolean[n + 1];
        Arrays.fill(isPrime, true);
        isPrime[0] = false;
        isPrime[1] = false;

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

        int count = 0;
        for (int i = 2; i <= n; ++i) {
            if (isPrime[i])
                count++;
        }

        int[] primes = new int[count];
        int idx = 0;
        for (int i = 2; i <= n; ++i) {
            if (isPrime[i])
                primes[idx++] = i;
        }
        return primes;
    }

    public static String solve() {
        int limit = 1000000;
        int[] primes = primesUpto(limit - 1);

        double sum = 0.0;
        long cnt = 0;

        for (int p : primes) {
            if (p == 2)
                continue;
            sum += FFormula((double) p);
            cnt++;
        }

        double ans = sum / (double) cnt;
        return String.format(java.util.Locale.US, "%.10f", ans);
    }

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