From c3f24f445e4f20b1d2cb82d18e94354327570d8d Mon Sep 17 00:00:00 2001 From: felixm Date: Wed, 24 Apr 2024 22:17:05 -0400 Subject: [PATCH] Solve 132. --- python/e132.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 python/e132.py diff --git a/python/e132.py b/python/e132.py new file mode 100644 index 0000000..61eb1ae --- /dev/null +++ b/python/e132.py @@ -0,0 +1,32 @@ +from lib_prime import primes + + +def r_modulo_closed_form(n, m): + assert n > 0 and m > 0 + return ((pow(10, n, 9 * m) - 1) // 9) % m + + +def is_factor(n, m): + return pow(10, n, 9 * m) == 1 + + +def repunit_factor_sum(n): + ps = [] + for p in primes(10**6): + assert is_factor(n, p) == (r_modulo_closed_form(n, p) == 0) + if r_modulo_closed_form(n, p) == 0: + ps.append(p) + if len(ps) == 40: + break + return sum(ps) + + +def euler_132(): + assert repunit_factor_sum(10) == 9414 + return repunit_factor_sum(10**9) + +if __name__ == "__main__": + solution = euler_132() + print("e132.py: " + str(solution)) + assert solution == 843296 +