OFFSET
1,1
COMMENTS
a(31) = 1003001 is the smallest palindromic naughty prime. - M. F. Hasler, Nov 22 2009
This sequence can be considered as irregular table in which row n lists the terms with n digits. The row lengths (number of terms with n digits) are then 0, 0, 0, 0, 8, 9, 296, 275, 7934, 9527, 235729, ... - M. F. Hasler, Jul 13 2018
LINKS
M. F. Hasler and Arkadiusz Wesolowski, Table of n, a(n) for n = 1..10000 (first 5000 terms from M. F. Hasler).
Chris Caldwell, The Prime Glossary, Naughty prime.
EXAMPLE
a(24) = 1000303 is a naughty prime because the number of zeros is greater than the number of all other digits.
MAPLE
Q[1]:= [seq([i], i=1..9)]:
for d from 2 to 6 do Q[d]:= map(t -> seq([i, op(t)], i=1..9), Q[d-1]) od:
F:= proc(d) local R, dn, s, sp, q, x;
R:= NULL;
for dn from 2 to floor((d-1)/2) do
for s in combinat:-choose([$1..d-2], dn-2) do
sp:= [0, op(s), d-1];
for q in Q[dn] do
x:= add(q[i]*10^sp[i], i=1..dn);
if isprime(x) then R:= R, x fi;
od od od;
sort([R])
end proc:
seq(op(F(d)), d=5..7); # Robert Israel, Jul 10 2018
MATHEMATICA
lst = {}; Do[If[PrimeQ[n] && Count[IntegerDigits[n], 0] > IntegerLength[n]/2, AppendTo[lst, n]], {n, 10^4 + 1, 3^13, 2}]; lst (* Arkadiusz Wesolowski, Sep 18 2011 *)
Select[Prime[Range[100000]], DigitCount[#, 10, 0]>IntegerLength[#]/2&] (* Harvey P. Dale, Jun 09 2015 *)
PROG
(PARI) next_A164968(p)={ for( n=#Str(p)\2+1, oo, my(L=10^(2*n+1)); p=max(10^(2*n-3), p); while( L>p=nextprime(p+1), vecsort(Vecsmall(Str(p)))[n]>48 || return(p)); p=0) } \\ M. F. Hasler, Nov 22 2009, syntax update Jul 10 2018
(PARI) A164968_row(n, a=List(), t=vectorv(n, i, 10^(n-i)))={for(z=2, (n-1)\2, my(v=vector(z, i, if(i<2, [1, 1], i<z, [2, n-1], [n, n]))); forvec(d=vector(z, i, [1, 9]), bittest(650, d[z])&& vecsum(d)%3&& forvec(p=v, isprime(d*vecextract(t, p))&& listput(a, d*vecextract(t, p)), 2))); Set(a)} \\ M. F. Hasler, Jul 13 2018
(Python)
from sympy import isprime
from itertools import combinations, count, islice, product
def agen(): # generator of terms
for d in count(5):
for first in "123456789":
passed = set()
for last in "1379":
for znum in range(d//2 + 1, d-1):
for zlocs in combinations(range(d-2), znum):
for rest in product("123456789", repeat=d-2-znum):
nzi, middle = 0, []
for i in range(d-2):
if i in zlocs:
middle.append("0")
else:
middle.append(rest[nzi])
nzi += 1
t = int("".join(first + "".join(middle) + last))
if isprime(t):
passed.add(t)
yield from sorted(passed)
print(list(islice(agen(), 31))) # Michael S. Branicky, Mar 11 2022
CROSSREFS
KEYWORD
base,nonn
AUTHOR
G. L. Honaker, Jr., Sep 02 2009
STATUS
approved