project-euler/133_repunit_nonfactors.py

28 lines
503 B
Python

#!/usr/bin/env python3
def add_divisors(n):
for k in range(1, (len(sieve) - 1) // n):
sieve[k*n] *= n * (sieve[k] // sieve[k*n])
def primes(n):
for p in range(3, int(n**0.5), 2):
if sieve[p] != 1:
continue
for i in range(p**2, n, 2*p):
sieve[i] = 0
n = 10**5
sieve = [1] * n
add_divisors(2)
add_divisors(5)
primes(n)
s = 0
for p in range(7, n, 2):
if sieve[p] == 1 and pow(10, sieve[p-1], 9*p) != 1:
s += p
print(s + 2 + 3 + 5)