2017/10/21 - Left Truncatable Prime

Recently Maths Inspiration produced some pencils with a fantastic idea. Yes, their name is on it:

Yes, it has a slightly cheesy catch-phrase:

But then there is something really clever.

I've had some more information about this, and the true story[0] is even better than I thought. Apparently the actual text was "Too Cool to do Drugs" - so that was: TOO COOL TO DO DRUGS

then: COOL TO DO DRUGS

and then we get: DO DRUGS Someone has even done a remake of the pencil[1]. My thanks to Stratoscope[2] for the comment[3] on Hacker News[4].

Similarly, then, the prime printed on the Maths Inspiration pencil will, of course, be reduced from the left as the pencil is used and sharpened, but a wonderful thing happens. As the digits are removed from the left, the number that remains is still prime.

It's a left-truncatable prime, which is "A Thing" and you can look it up on the web, but I thought I'd write a quick program to check the one given on the pencil (yes, it's prime), and to see if there was a longer one.

There isn't.

Here's my code. It's intended to be clear rather than clever, but do feel free to tell me what I've got wrong.

Nice challenge: Find a false positive from this prime testing routine.

#!/usr/bin/python from math import log small_primes = [ 2, 3, 5, 7, \ 11, 13, 17, \ 19, 23, 29, ] def is_prime( n ): if n in small_primes: return True if n < small_primes[-1]: return False for p in small_primes: if pow(p,n-1,n)!=1: return False return True limit = 10 prospects = range(2,limit) prospects = [ x for x in prospects if is_prime(x) ] while prospects: p2 = [] for t in range(1,10): p2 += [ t*limit+x for x in prospects \ if is_prime( t*limit+x ) ] prospects = p2 limit *= 10 print log(limit)/log(10), len(prospects), prospects

Lovely thing.

References: