#! /usr/bin/env python3
"""
pe51.py
https://mind.kittttttan.info/py/pe51
"""
# https://mind.kittttttan.info/py/pe0
from pe import sieve
primes = sieve(1000000)
primeset = set(primes)
def is_prime(n):
return n in primeset
def get_char_index(s, n):
index = []
char = str(n)
for i in range(len(s)):
if s[i] == char:
index.append(i)
return index
def change(sp, n, index):
sp = list(sp)
for i in index:
sp[i] = str(n + 1)
return ''.join(sp)
def count_change(sp, n):
cnt = 1
index = get_char_index(sp, n)
for i in range(n, 10):
sp = change(sp, i, index)
if is_prime(int(sp)):
cnt += 1
return cnt
def pe51():
"""
Find the smallest prime which, by changing the same part of the number,
can form eight different primes.
"""
for p in primes:
sp = str(p)
for i in range(3):
if sp.count(str(i)) > 1:
if count_change(sp, i) == 8:
print(p)
return
print('Not found.')
if __name__ == "__main__":
pe51()