From a0a8fcda7d057f1d6d63eb6bfb0c79e32ecc2d87 Mon Sep 17 00:00:00 2001 From: felixm Date: Tue, 5 Mar 2024 20:00:31 -0500 Subject: [PATCH] Solve 127 with brute force #slow. --- python/e127.py | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 python/e127.py diff --git a/python/e127.py b/python/e127.py new file mode 100644 index 0000000..963cca6 --- /dev/null +++ b/python/e127.py @@ -0,0 +1,67 @@ +from functools import lru_cache +from lib_prime import prime_factors + + +@lru_cache(maxsize=200000) +def unique_factors(n: int) -> set[int]: + return set(prime_factors(n)) + + +def euler_127(): + c_max = 120000 + r = 0 + + # for a in [5]: + for a in range(1, c_max): + fsa = unique_factors(a) + # for b in [27]: + for b in range(a + 1, c_max): + if a + b > c_max: + break + c = a + b + rad = 1 + + do_continue = False + for fa in fsa: + rad *= fa + if b % fa == 0: + do_continue = True + break + if c % fa == 0: + do_continue = True + break + if do_continue: + continue + if rad > c: + continue + + do_continue = False + fsb = unique_factors(b) + for fb in fsb: + rad *= fb + if c % fb == 0: + do_continue = True + break + if do_continue: + continue + + if rad >= c: + continue + + fsc = unique_factors(c) + for fc in fsc: + rad *= fc + if rad >= c: + continue + + # print(fsa, fsb, fsc) + # print(a, b, c) + r += c + return r + + +if __name__ == "__main__": + solution = euler_127() + print("e127.py: " + str(solution)) + assert(solution == 18407904) +