46 lines
986 B
Python
46 lines
986 B
Python
|
|
from tools import number_theory
|
|
|
|
def shift(num):
|
|
left = str(num)[:-1]
|
|
while left:
|
|
yield int(left)
|
|
left = left[:-1]
|
|
right = str(num)[1:]
|
|
while right:
|
|
yield int(right)
|
|
right = right[1:]
|
|
|
|
def check_prime(x):
|
|
x = str(x)
|
|
if ('9' == x[0]) or ('9' == x[-1]):
|
|
return False
|
|
if ('1' == x[0]) or ('1' == x[-1]):
|
|
return False
|
|
if '5' in x[1:]:
|
|
return False
|
|
if '2' in x[1:]:
|
|
return False
|
|
if '0' in x:
|
|
return False
|
|
if '4' in x:
|
|
return False
|
|
if '6' in x:
|
|
return False
|
|
if '8' in x:
|
|
return False
|
|
return True
|
|
|
|
def search():
|
|
find = []
|
|
prime = list(number_theory.make_prime(1000000))
|
|
for p in filter(lambda x: check_prime(x), prime):
|
|
for s in shift(p):
|
|
if s not in prime:
|
|
break
|
|
else:
|
|
find.append(p)
|
|
return find[4:]
|
|
|
|
print(sum(search()))
|