%I #48 Feb 16 2025 08:32:36
%S 2,3,5,7,13,17,23,37,43,47,53,67,73,83,97,103,107,113,137,167,173,197,
%T 223,283,307,313,317,337,347,353,367,373,383,397,443,467,503,523,547,
%U 607,613,617,643,647,653,673,683,743,773,797,823,853,883,907,937,947
%N Every suffix is prime.
%C Primes in which repeatedly deleting the most significant digit gives a prime at every step until a single-digit prime remains.
%C Every digit string containing the least significant digit is prime. - _Amarnath Murthy_, Sep 24 2003
%H Alois P. Heinz, <a href="/A033664/b033664.txt">Table of n, a(n) for n = 1..66973</a> (first 8779 terms from T. D. Noe)
%H Eric Weisstein's World of Mathematics, <a href="https://mathworld.wolfram.com/TruncatablePrime.html">Truncatable Prime.</a>
%p T:= proc(n) option remember; `if`(n=0, "", select(isprime, [seq(seq(
%p seq(parse(cat(j, 0$(n-i), p)), p=[T(i-1)]), i=1..n), j=1..9)])[])
%p end:
%p seq(T(n), n=1..4); # _Alois P. Heinz_, Sep 01 2021
%t h8pQ[n_]:=And@@PrimeQ/@Most[NestWhileList[FromDigits[Rest[ IntegerDigits[ #]]]&, n,#>0&]]; Select[Prime[Range[1000]],h8pQ] (* _Harvey P. Dale_, May 26 2011 *)
%o (PARI) fileO="b033664.txt";lim=8779;v=vector(lim);v[1]=2;v[2]=3;v[3]=5;v[4]=7;j=4; write(fileO,"1 2");write(fileO,"2 3");write(fileO,"3 5");write(fileO,"4 7"); p10=1;until(0,p10*=10;j0=j;for(k=1,9,k10=k*p10; for(i=1,j0,if(j==lim,break(3));z=k10+v[i]; if(isprime(z),j++;v[j]=z;write(fileO,j," ",z);)))) \\ _Harry J. Smith_, Sep 20 2008
%o (Haskell)
%o a033664 n = a033664_list !! (n-1)
%o a033664_list = filter (all ((== 1) . a010051. read) .
%o init . tail . tails . show) a000040_list
%o -- _Reinhard Zumkeller_, Jul 10 2013
%o (Python)
%o from sympy import isprime, primerange
%o def ok(p): # does prime p satisfy the property
%o s = str(p)
%o return all(isprime(int(s[i:])) for i in range(1, len(s)))
%o print(list(filter(ok, primerange(1, 1000)))) # _Michael S. Branicky_, Sep 01 2021
%o (Python) # alternate for going to large numbers
%o def agen(maxdigits):
%o yield from [2, 3, 5, 7]
%o primestrs, digits, d = ["2", "3", "5", "7"], "0123456789", 1
%o while len(primestrs) > 0 and d < maxdigits:
%o cands = set(d+p for p in primestrs for d in "0123456789")
%o primestrs = [c for c in cands if c[0] == "0" or isprime(int(c))]
%o yield from sorted(map(int, (p for p in primestrs if p[0] != "0")))
%o d += 1
%o print([p for p in agen(11)]) # _Michael S. Branicky_, Sep 01 2021
%Y Cf. A024785, A032437, A020994, A024770, A052023, A052024, A052025, A050986, A050987, A069866, A038680, A010051, A000040.
%K nonn,base,easy,nice
%O 1,1
%A _N. J. A. Sloane_
%E More terms from _Erich Friedman_