Solve 132.
parent
3d35bcb76d
commit
c3f24f445e
|
@ -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
|
||||
|
Loading…
Reference in New Issue