31 lines
524 B
Python
31 lines
524 B
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
def modpw(n, p):
|
||
|
r = 0
|
||
|
while n >= p:
|
||
|
r += n // p
|
||
|
n //= p
|
||
|
return r
|
||
|
|
||
|
n = 10**8 + 1
|
||
|
sieve = [0] * n
|
||
|
|
||
|
for p in range(2, n):
|
||
|
if sieve[p] > 0:
|
||
|
continue
|
||
|
minN = p
|
||
|
frompw = 1
|
||
|
topw = 2
|
||
|
k = 1
|
||
|
while k*p < n:
|
||
|
for pw in range(frompw, topw):
|
||
|
k *= p
|
||
|
for m in range(k, n, k):
|
||
|
sieve[m] = max(sieve[m], minN)
|
||
|
minN += p
|
||
|
frompw = topw
|
||
|
topw = modpw(minN, p) + 1
|
||
|
|
||
|
print(sum(sieve[2:]))
|
||
|
|