cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A130448 Squares whose decimal representation contains no proper subsequence which is a positive square.

Original entry on oeis.org

1, 4, 9, 25, 36, 576, 676, 7056, 80656, 665856, 2027776, 2802276, 22282727076, 77770707876, 78807087076, 7888885568656, 8782782707776, 72822772707876, 555006880085056, 782280288087076, 827702888070276, 888288787822276, 2282820800707876, 7880082008070276, 80077778877070276, 88778000807227876, 782828878078078276, 872727072820287876
Offset: 1

Views

Author

Martin Raab, Aug 07 2007

Keywords

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

Examples

			576 is in the list because none of its proper subsequences 5, 7, 6, 57, 76 or 56 are squares.
		

Crossrefs

Cf. A131599, A238334 (substrings).

Programs

  • 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 *)
  • 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

Extensions

Edited by N. J. A. Sloane, Sep 14 2007
a(23)-a(28) from Mauro Fiorentini, Jan 24 2017