Solve problem 231
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
Reference in New Issue
Block a user