|
|
A096245
|
|
Number of n-digit base-12 deletable primes.
|
|
1
|
|
|
|
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.
|
|
LINKS
|
|
|
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]];
|
|
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=", ")
|
|
CROSSREFS
|
|
|
KEYWORD
|
nonn,base,more
|
|
AUTHOR
|
|
|
EXTENSIONS
|
|
|
STATUS
|
approved
|
|
|
|