aboutsummaryrefslogtreecommitdiff
path: root/challenge-147/roger-bell-west/python/ch-1.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-147/roger-bell-west/python/ch-1.py')
-rwxr-xr-xchallenge-147/roger-bell-west/python/ch-1.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/challenge-147/roger-bell-west/python/ch-1.py b/challenge-147/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..18f827e01c
--- /dev/null
+++ b/challenge-147/roger-bell-west/python/ch-1.py
@@ -0,0 +1,53 @@
+#! /usr/bin/python3
+
+import unittest
+
+from math import sqrt,floor
+from collections import deque
+
+def genprimes(mx):
+ primesh=set(range(2,4))
+ for i in range(6,mx+2,6):
+ for j in range(i-1,i+2,2):
+ if j <= mx:
+ primesh.add(j)
+ q=deque([2,3,5,7])
+ p=q.popleft()
+ mr=floor(sqrt(mx))
+ while p <= mr:
+ if p in primesh:
+ for i in range(p*p,mx+1,p):
+ primesh.discard(i)
+ if len(q) < 2:
+ q.append(q[-1]+4)
+ q.append(q[-1]+2)
+ p=q.popleft()
+ primes=list(primesh)
+ primes.sort()
+ return primes
+
+def ltruncprimes(count):
+ out=[]
+ lt=0
+ p=[str(i) for i in genprimes(500)]
+ pp=set(p)
+ for pc in p:
+ l=len(pc)
+ c=True
+ for i in range(1,l):
+ if not pc[i:l] in pp:
+ c=False
+ break
+ if c:
+ out.append(int(pc))
+ lt += 1
+ if lt >= count:
+ break
+ return out
+
+class TestLtruncprimes(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(ltruncprimes(20),[2, 3, 5, 7, 13, 17, 23, 37, 43, 47, 53, 67, 73, 83, 97, 113, 137, 167, 173, 197],'example 1')
+
+unittest.main()