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].
|
There was a beautiful and now classic example of a marketing fail when
someone produced a pencil with the logo "DON'T DO DRUGS". But as the
pencil was sharpened the logo was gradually reduced, firstly to the
direct exhortation "DO DRUGS" and then finally the simple, dramatic,
"DRUGS".
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:
Send us a comment ...
|