29 lines
553 B
Python
29 lines
553 B
Python
|
from lib_prime import primes
|
||
|
|
||
|
|
||
|
def get_truncatable_numbers(n):
|
||
|
s = str(n)
|
||
|
ts = []
|
||
|
for i in range(1, len(s)):
|
||
|
ts.append(int(s[:i]))
|
||
|
ts.append(int(s[-i:]))
|
||
|
return ts
|
||
|
|
||
|
|
||
|
def euler_037():
|
||
|
ps = primes(1000000)
|
||
|
ps_set = set(ps)
|
||
|
s = []
|
||
|
for p in ps[4:]:
|
||
|
for t in get_truncatable_numbers(p):
|
||
|
if t not in ps_set:
|
||
|
break
|
||
|
else:
|
||
|
s.append(p)
|
||
|
return sum(s)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
print("e037.py: " + str(euler_037()))
|
||
|
assert(euler_037() == 748317)
|