33 lines
677 B
Python
33 lines
677 B
Python
|
from math import gcd
|
||
|
from lib_prime import is_prime_rabin_miller
|
||
|
|
||
|
|
||
|
def r_modulo_closed_form(n, m):
|
||
|
assert n > 0 and m > 0
|
||
|
return ((pow(10, n, 9 * m) - 1) // 9) % m
|
||
|
|
||
|
|
||
|
def a_special(n):
|
||
|
k = n - 1
|
||
|
if r_modulo_closed_form(k, n) == 0:
|
||
|
return k
|
||
|
return None
|
||
|
|
||
|
|
||
|
def euler_130():
|
||
|
c, r = 0, 0
|
||
|
for n in range(2, 10**9):
|
||
|
if gcd(n, 10) == 1 and not is_prime_rabin_miller(n):
|
||
|
if a_special(n) is not None:
|
||
|
r += n
|
||
|
c += 1
|
||
|
if c == 25:
|
||
|
break
|
||
|
return r
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
solution = euler_130()
|
||
|
print("e130.py: " + str(solution))
|
||
|
assert(solution == 149253)
|