(PARI) allss(d, ss, nbc) = {for (i=1, nbc, for (j=1, #d -i +1, subd = []; subd = concat(subd, d[j]); for (k=1, i-1, subd = concat(subd, d[j+k]); ); ss = vecsort(concat(ss, subst(Pol(subd), x, 10)), , 8); ); ); return (ss); }
isoks(k, n, vp) = {nbc = #Str(prime(n)); d = digits(k); sd = vecsort(d, , 8); for (j=1, #vp, if (!vecsearch(sd, vp[j]), return(0)); ); ss = []; if (#d < nbc, return(0)); ss = allss(d, ss, nbc); rd = vector(#d, i, d[#d - i +1]); ss = allss(rd, ss, nbc); for (i=1, n, if (! vecsearch (ss, prime(i)), return (0)); ); return (1); }
a(n) = {vp = []; for (i=1, n, dp = digits(prime(i)); for (k=1, #dp, vp = vecsort(concat(vp, dp[k]), , 8); ); ); k = subst(Pol(vp), x, 10); while (!isoks(k, n, vp), k++); k; } \\
Michel Marcus, Aug 28 2014