Esempio n. 1
0
def print_info(max_list):
    import primes
    s = set(max_list)
    print s
    if all(map(lambda n: n %2 == 0, s)):
        print "all divisible by 2"
    lrg_factors = []
    for n in s:
        lrg_factors.append(max(list(primes.factorGen(n)), key=lambda x: x[0])[0])
    print "largest factors: {}".format(sorted(lrg_factors))
Esempio n. 2
0
def numDivisors(n):
    import primes

    if n <= 1:
        return 0
    factors = primes.factorGen(n)
    ans = 1
    for _, x in factors:
        ans *= x + 1
    return ans
Esempio n. 3
0
def two_factor_sieve(numbers):
    maxes = {}
    for idx, number in enumerate(numbers):
        if number is None:
            continue
        assert idx == number, "{} {}".format(idx, number)
        factors = list(primes.factorGen(number))
        if len(factors) < 2:
            numbers[idx] = None
        if len(factors) > 2:
            while idx < len(numbers):
                numbers[idx] = None
                idx += number
        if len(factors) == 2:
            maxes[(factors[0][0], factors[1][0])] = number
    return maxes
Esempio n. 4
0
def divisorGen(n):
    import primes

    factors = list(primes.factorGen(n))
    nfactors = len(factors)
    f = [0] * nfactors
    while True:
        yield reduce(lambda x, y: x * y, [factors[x][0] ** f[x] for x in range(nfactors)], 1)
        i = 0
        while True:
            f[i] += 1
            if f[i] <= factors[i][1]:
                break
            f[i] = 0
            i += 1
            if i >= nfactors:
                return