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.

A128783 Numbers whose square is a nontrivial concatenation of other squares.

Original entry on oeis.org

7, 10, 12, 13, 19, 20, 21, 30, 35, 37, 38, 40, 41, 44, 50, 57, 60, 65, 70, 80, 90, 95, 97, 100, 102, 105, 107, 108, 110, 112, 119, 120, 121, 125, 129, 130, 138, 140, 150, 160, 170, 180, 190, 191, 200, 201, 204, 205, 209, 210, 212, 220, 223, 230, 240, 250
Offset: 1

Views

Author

Jonathan R. Love (japanada11(AT)yahoo.ca), Apr 07 2007

Keywords

Comments

a(n) = sqrt(A019547(n)); the sequence A019547 gives the squares themselves and this sequence gives the numbers whose squares yield the numbers in A019547. All multiples of 10 are included, because for any value of x, (x*10)^2 = x^2*100, which is x^2 followed by two zeros. Every digit except 6 is used as the last digit of a number in this sequence before 50. 6 is not used as the last digit of a number in this sequence until 306.

Examples

			13 is included because 13^2 = 169, which includes 16 and 9, two perfect squares.
		

Crossrefs

Cf. A019547.
Cf. A010052, A000290; A048653 is a subsequence.

Programs

  • Haskell
    a128783 n = a128783_list !! (n-1)
    a128783_list = filter (f . show . (^ 2)) [1..] where
       f zs = g (init $ tail $ inits zs) (tail $ init $ tails zs)
       g (xs:xss) (ys:yss)
         | a010052 (read xs) == 1 = a010052 (read ys) == 1 || f ys || g xss yss
         | otherwise              = g xss yss
       g   = False
    -- Reinhard Zumkeller, Oct 11 2011
    
  • Python
    from math import isqrt
    def issquare(n): return isqrt(n)**2 == n
    def ok(n, c):
        if n%10 in { 2, 3, 7, 8}: return False
        if issquare(n) and c > 1: return True
        d = str(n)
        for i in range(1, len(d)):
            if issquare(int(d[:i])) and ok(int(d[i:]), c+1): return True
        return False
    print([r for r in range(251) if ok(r*r, 1)]) # Michael S. Branicky, Jul 10 2021

Extensions

Missing terms 205 and 209 inserted by Reinhard Zumkeller, Oct 11 2011