def PE(N): # @DuplicatedSignature primes = primeSieve(N + 1) # returns list of all primes <=N sqrtN = sqrt(N) ans = 1 for p in primes: if p <= sqrtN: ans *= p ** (int(log(N) / log(p))) else: ans *= p return ans
def lcm(N): primes = primeSieve(N + 1) sqrtN = sqrt(N) ans = 1 for p in primes: if p <= sqrtN: ans *= p**(int(log(N) / log(p))) else: ans *= p return ans
def primeFactors(n): # returns list of all prime factors primes = primeSieve(int(math.ceil(math.sqrt(n))) + 1) factors = list() i = 0 fact = n while fact not in primes and i < len(primes): if fact % primes[i] == 0: fact = fact / primes[i] factors.append(primes[i]) else: i += 1 factors.append(fact) # remaining factor must be prime so add uniques = set(factors) primeFactorisation = dict() for prime in uniques: exp = factors.count(prime) primeFactorisation[prime] = exp return primeFactorisation