diff --git a/python/e133.py b/python/e133.py new file mode 100644 index 0000000..f1327ae --- /dev/null +++ b/python/e133.py @@ -0,0 +1,23 @@ +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 euler_132(): + n = 10**20 + r = 0 + for p in primes(100_000): + if r_modulo_closed_form(n, p) == 0: + pass + else: + r += p + return r + + +if __name__ == "__main__": + solution = euler_132() + print("e132.py: " + str(solution)) + assert solution == 453647705 diff --git a/python/e134.py b/python/e134.py new file mode 100644 index 0000000..0f5452f --- /dev/null +++ b/python/e134.py @@ -0,0 +1,40 @@ +from lib_prime import primes +from math import log, ceil + + +def s(p1, p2): + p1l = ceil(log(p1, 10)) + base = 10**p1l + for lhs in range(base, 10**12, base): + r = lhs + p1 + if r % p2 == 0: + return r + assert False + + +def s2(p1, p2): + # Invert, always invert ;) + p1l = ceil(log(p1, 10)) + base = 10**p1l + c = p2 + while True: + if c % base == p1: + return c + c += p2 + + +def euler_134(): + r = 0 + ps = primes(10**6 + 10) # p1 < 10**6 but p2 is the first p > 10**6 + for i in range(2, len(ps) - 1): + p1, p2 = ps[i], ps[i + 1] + sc = s(p1, p2) + r += sc + return r + + +if __name__ == "__main__": + solution = euler_134() + print("e134.py: " + str(solution)) + assert solution == 18613426663617118 +