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
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))
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
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]))
def main(): coprime_pairs = farey(100) coprime_pairs.sort() for cand in coprime_pairs: print(cand, sorted(prime_factorization(cand[0]).items()))
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
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")