forked from nayuki/Project-Euler-solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathp037.py
More file actions
36 lines (28 loc) · 723 Bytes
/
p037.py
File metadata and controls
36 lines (28 loc) · 723 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#
# Solution to Project Euler problem 37
# Copyright (c) Project Nayuki. All rights reserved.
#
# https://www.nayuki.io/page/project-euler-solutions
# https://github.com/nayuki/Project-Euler-solutions
#
import eulerlib, itertools, sys
if sys.version_info.major == 2:
filter = itertools.ifilter
def compute():
ans = sum(itertools.islice(filter(is_truncatable_prime, itertools.count(10)), 11))
return str(ans)
def is_truncatable_prime(n):
# Test if left-truncatable
i = 10
while i <= n:
if not eulerlib.is_prime(n % i):
return False
i *= 10
# Test if right-truncatable
while n > 0:
if not eulerlib.is_prime(n):
return False
n //= 10
return True
if __name__ == "__main__":
print(compute())