login
A128783
Numbers whose square is a nontrivial concatenation of other squares.
4
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,1
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.
LINKS
EXAMPLE
13 is included because 13^2 = 169, which includes 16 and 9, two perfect squares.
PROG
(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
CROSSREFS
Cf. A019547.
Cf. A010052, A000290; A048653 is a subsequence.
Sequence in context: A048792 A024585 A190482 * A024586 A050419 A089373
KEYWORD
base,nonn
AUTHOR
Jonathan R. Love (japanada11(AT)yahoo.ca), Apr 07 2007
EXTENSIONS
Missing terms 205 and 209 inserted by Reinhard Zumkeller, Oct 11 2011
STATUS
approved