login
A096245
Number of n-digit base-12 deletable primes.
1
5, 25, 186, 1398, 11500, 99074, 893062, 8352961, 80564801
OFFSET
1,1
COMMENTS
A prime p is a base-b deletable prime if, when written in base b, it has the property that removing some digit leaves either the empty string or another deletable prime. "Digit" means digit in base b.
Deleting a digit cannot leave any leading 0's in the new string. For example, deleting the 2 in 2003 to obtain 003 is not allowed.
MATHEMATICA
b = 12; a = {5}; d = {2, 3, 5, 7, 11};
For[n = 2, n <= 5, n++,
p = Select[Range[b^(n - 1), b^n - 1], PrimeQ[#] &];
ct = 0;
For[i = 1, i <= Length[p], i++,
c = IntegerDigits[p[[i]], b];
For[j = 1, j <= n, j++,
t = Delete[c, j];
If[t[[1]] == 0, Continue[]];
If[MemberQ[d, FromDigits[t, b]], AppendTo[d, p[[i]]]; ct++;
Break[]]]];
AppendTo[a, ct]];
a (* Robert Price, Nov 13 2018 *)
PROG
(Python)
from sympy import isprime
from sympy.ntheory.digits import digits
def strmap(d):
return str(d) if d < 10 else "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[d-10]
def ok(n, prevset, base=12): # works for bases 2-36
if not isprime(n): return False
s = "".join(strmap(d) for d in digits(n, base)[1:])
si = (s[:i]+s[i+1:] for i in range(len(s)))
return any(t[0] != '0' and int(t, base) in prevset for t in si)
def afind(terms, base=12): # works for bases 3-36
s = set([p for p in range(1, base) if isprime(p)])
alst, snxt = [len(s)], set()
print(len(s), end=", ")
for n in range(2, terms+1):
for i in range(base**(n-1), base**n):
if ok(i, s):
snxt.add(i)
s, snxt = snxt, set()
print(len(s), end=", ")
afind(6) # Michael S. Branicky, Jan 17 2022
CROSSREFS
KEYWORD
nonn,base,more
AUTHOR
Michael Kleber, Feb 28 2003
EXTENSIONS
a(6)-a(8) from Ryan Propper, Jul 19 2005
Edited by Charles R Greathouse IV, Aug 03 2010
a(9) from Michael S. Branicky, Jan 17 2022
STATUS
approved