In [1]:
from euler import get_factors
In [2]:
get_factors(20)
Out[2]:
In [3]:
def terse(x):
f = {}
for i in x:
if i not in f:
f[i] = 0
f[i] += 1
return f
In [4]:
terse(get_factors(20))
Out[4]:
In [5]:
def get_terse_primes(x):
primes = {}
for i in range(2, x + 1):
p = terse(get_factors(i))
for key in p:
if key not in primes:
primes[key] = 0
if p[key] > primes[key]:
primes[key] = p[key]
return primes
In [6]:
get_terse_primes(20)
Out[6]:
In [7]:
def product_terse_primes(x):
product = 1
primes = get_terse_primes(x)
for prime in primes:
product *= prime ** primes[prime]
return product
In [8]:
%timeit product_terse_primes(20)
product_terse_primes(20)
Out[8]: