33 lines
685 B
Python
33 lines
685 B
Python
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
|
|
|