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
示例#2
0
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