OFFSET
1,1
LINKS
P. De Geest, Index to related sequences
Hisanori Mishima, Sporadic tridigital solutions
PROG
(PARI) \\ From M. F. Hasler, May 14 2007, edited Nov 14 2017: (Start)
admissibleMod(LIM=10000)={ local( t=[4], tt=1 ); while( LIM > tt*=10, t=concat([t, t+vector(#t, i, 3)*tt, t+vector(#t, i, 4)*tt])); /*print("t="t); */ t=Set(t); tt=[]; for(i=1, LIM, setsearch(t, i^2%LIM) && tt=concat(tt, i)); concat(tt, LIM+tt[1])}
A058429(Nmax=1e19, N=2, addMod=100000, debug=1)={my( a=[], Nnext, N2, numDigits, place, addNext=admissibleMod(addMod=round(addMod)), d=1, add=vector(addMod, i, if(i-1>addNext[d], d++); addNext[d]-i+1), nextOK=[0, 2, 1, 0, 0, 5, 4, 3, 2, 1], pow10 = vector( d=#Str((Nmax=round(Nmax))^2), i, 10^(i-1)) ); nextOK = vector( #nextOK, i, if( nextOK[i], nextOK[i]*pow10)); N=round(N); while( Nmax >= N, numDigits = #Str(N2=N^2); 3 > N2 \ pow10[numDigits] && N = sqrtint( 3*pow10[numDigits]+3 )+1; Nnext = min( Nmax, sqrtint(pow10[numDigits]*10)\3*2); if( debug, print( "checking from "N" to "Nnext": <= ", 1+max(0, Nnext-N)*(#addNext-1) \ addMod, " candidates.")); N += add[1+ N%addMod]; place=1; while( Nnext >= N, dr = divrem( N2=N^2, pow10[ place=numDigits ] ); while( place-- && !d=nextOK[1+ (dr = divrem( dr[2], pow10[ place ] ))[1]], ); place || break; N = sqrtint( N2 - dr[2] + d[ place ])+1; N+=add[1+N%addMod]); if( !place, debug && print( N, "^2 = ", N^2); a=concat(a, N); N=Nnext+1 ); N=Nnext*5\2); a } \\ (End)
CROSSREFS
KEYWORD
nonn,base,hard
AUTHOR
Patrick De Geest, Nov 15 2000
EXTENSIONS
a(6) from M. F. Hasler, May 14 2007
a(7) from Mishima's page added by Max Alekseyev, Jul 13 2009
STATUS
approved