Solve problems 129 and 130.
This commit is contained in:
32
python/e130.py
Normal file
32
python/e130.py
Normal file
@@ -0,0 +1,32 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user