diff --git a/python/e231.py b/python/e231.py new file mode 100644 index 0000000..5705818 --- /dev/null +++ b/python/e231.py @@ -0,0 +1,25 @@ +from lib_prime import prime_factors_count +from collections import defaultdict + + +def sum_factors(n: int, k: int) -> int: + factors_num = defaultdict(int) + for i in range(n - k + 1, n + 1): + for factor, count in prime_factors_count(i).items(): + factors_num[factor] += count + for i in range(2, k + 1): + for factor, count in prime_factors_count(i).items(): + factors_num[factor] -= count + return sum(factor * count for factor, count in factors_num.items()) + + +def euler_231(): + assert sum_factors(10, 3) == 14 + return sum_factors(20 * 10**6, 15 * 10**6) + + +if __name__ == "__main__": + solution = euler_231() + print(f"e231.py: {solution}") + # assert(solution == 0) +