OFFSET
1,2
COMMENTS
Is this sequence finite and if so what is the last term?
Yes, the sequence must be finite. This follows from a well-known result: there are no infinite antichains for the subsequence ordering. - Jeffrey Shallit, Mar 05 2014
If it exists, a(29) is greater than 10^18. - Mauro Fiorentini, Jan 24 2017
If it exists, a(51) is greater than 2*10^30. - Giovanni Resta, Jan 08 2018
LINKS
Martin Raab, Table of n, a(n) for n = 1..55 (terms 1..50 from Giovanni Resta, terms 51..55 from Martin Raab)
Michael S. Branicky, Python program
Wikipedia, Subsequence
EXAMPLE
576 is in the list because none of its proper subsequences 5, 7, 6, 57, 76 or 56 are squares.
MATHEMATICA
fQ[n_] := Module[{d = IntegerDigits[n], ds, sq}, ds = FromDigits /@ Union[Most[Rest[Subsets[d]]]]; sq = Select[ds, # > 0 && IntegerQ[Sqrt[#]] &, 1]; sq == {}]; Select[Range[0, 100000]^2, fQ] (* T. D. Noe, Mar 05 2014 *)
PROG
(PARI) isok(n) = {my(d = digits(n)); for (k = 1, #d, for (j= 1, #d - k + 1, if (j != #d, sd = vector(j, i, d[k+i-1]); nsd = fromdigits(sd); if (nsd && issquare(nsd), return(0)); ); ); ); return (1); } \\ Michel Marcus, Apr 21 2018
(Python) # see linked program for faster version
from math import isqrt
from itertools import chain, combinations as C, count, islice
def issquare(n): return isqrt(n)**2 == n
def psets(s): # nonempty proper subsets of s
return chain.from_iterable(C(s, r) for r in range(1, len(s)))
def cond(s):
ss = ("".join(t) for t in psets(s) if t[0] != "0")
return not any(issquare(int(u)) for u in ss)
def agen(): yield from (k**2 for k in count(1) if cond(str(k**2)))
print(list(islice(agen(), 15))) # Michael S. Branicky, Feb 23 2023
CROSSREFS
KEYWORD
base,nonn,fini
AUTHOR
Martin Raab, Aug 07 2007
EXTENSIONS
Edited by N. J. A. Sloane, Sep 14 2007
a(23)-a(28) from Mauro Fiorentini, Jan 24 2017
STATUS
approved