#!/usr/bin/env python3 from math import ceil def reducetwo(n): c = 0 while not n%2: n //= 2 c += 1 return n, c def primes(n): sieve = [0] * (n//2) for p in range(3, n, 2): if sieve[p//2] > 0: continue for k in range(1, n//p+1, 2): sieve[(p*k)//2] += p + sieve[k//2] - sieve[(p*k)//2] return sieve n = 2*10**7 k = 15*10**6 sieve = primes(n) print("Primed.") s = 0 for m in range(n, n-k, -1): if not m % 2: m, c = reducetwo(m) s += 2*c s += sieve[m//2] print("Calculated.") for m in range(2, k+1): if not m % 2: m, c = reducetwo(m) s -= 2*c s -= sieve[m//2] print(s)