コード例 #1
0
def totient(n, factors=None):
    if factors is None:
        factors = prime_factorization(n).keys()
    for fac in factors:
        n //= fac
        n *= fac - 1
    return n
コード例 #2
0
def totient(n, factors=None):
    if factors is None:
        factors = prime_factorization(n).keys()
    for fac in factors:
        n //= fac
        n *= fac - 1
    return n
コード例 #3
0
def main():
    square_free = {1}
    current = [1]
    for i in range(50):
        current = next_pascal(current)
        # print(current)
        for j in current:
            if all(exp < 2 for exp in prime_factorization(j).values()):
                square_free.add(j)

    print(sum(square_free))
コード例 #4
0
def main():
    number = 100
    while True:
        factorization = prime_factorization(number * (number - 1) // 2)
        divisors = 1
        for i in factorization.values():
            divisors *= i + 1
        if divisors > 500:
            print(number * (number - 1) // 2)
            break

        number += 1
コード例 #5
0
def decompose(n):
    """Decompose inverse square as sum of prime inverse squares"""
    p_fact = sorted(prime_factorization(n).items())
    facts_exp = [f**(e * 2) for f, e in p_fact]
    coeffs = [1] * len(facts_exp)

    prod = facts_exp[0]
    for i in range(1, len(facts_exp)):
        coeff2, coeff1 = extended_gcd(prod, facts_exp[i])
        for j in range(i):
            coeffs[j] *= coeff1
        coeffs[i] = coeff2

        prod *= facts_exp[i]

    return list(zip(coeffs, facts_exp, [f for f, e in p_fact]))
コード例 #6
0
def main():
    coprime_pairs = farey(100)
    coprime_pairs.sort()
    for cand in coprime_pairs:
        print(cand, sorted(prime_factorization(cand[0]).items()))
コード例 #7
0
def reciprocal_solution(n):
    # return sum(n*i % (i-n) == 0 for i in range(n+1, 2*n+1))  # slow
    return (product(2 * i + 1 for i in prime_factorization(n).values()) + 1) // 2
コード例 #8
0
def main():
    coprime_pairs = farey(100)
    coprime_pairs.sort()
    for cand in coprime_pairs:
        print(cand, sorted(prime_factorization(cand[0]).items()))
コード例 #9
0
def reciprocal_solution(n):
    # return sum(n*i % (i-n) == 0 for i in range(n+1, 2*n+1))  # slow
    return (product(2 * i + 1
                    for i in prime_factorization(n).values()) + 1) // 2
コード例 #10
0
from mathutil import prime_factorization


def print_factorization(factorization):
    factors = sorted(factorization.keys())
    print(" * ".join("{}^{}".format(fac, factorization[fac]) for fac in factors))


def main():
    number = 100
    while True:
        factorization = prime_factorization(number * (number - 1) // 2)
        divisors = 1
        for i in factorization.values():
            divisors *= i + 1
        if divisors > 500:
            print(number * (number - 1) // 2)
            break

        number += 1


if __name__ == '__main__':
    from time import time
    starting_time = time()
    print_factorization(prime_factorization(1234567890))
    main()
    print("Time elapsed:", time() - starting_time, "seconds")