login
A058429
Numbers k such that k^2 contains only digits {0,3,4}, not ending with zero.
9
2, 548, 585688, 58591812, 200824138, 5773251280200207952, 20832739723817975138362
OFFSET
1,1
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
Cf. A058430.
Sequence in context: A120840 A348174 A348003 * A336784 A201247 A265633
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