login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A048653
Numbers k such that the decimal digits of k^2 can be partitioned into two or more nonzero squares.
4
7, 12, 13, 19, 21, 35, 37, 38, 41, 44, 57, 65, 70, 107, 108, 112, 119, 120, 121, 125, 129, 130, 190, 191, 204, 205, 209, 210, 212, 223, 253, 285, 305, 306, 315, 342, 343, 345, 350, 369, 370, 379, 380, 408, 410, 413, 440, 441, 475, 487, 501, 538, 570, 642, 650
OFFSET
1,1
LINKS
EXAMPLE
12 is present because 12^2=144 can be partitioned into three squares 1, 4 and 4.
108^2 = 11664 = 1_16_64, 120^2 = 14400 = 1_4_400, so 108 and 120 are in the sequence.
MATHEMATICA
(* This non-optimized program is not suitable to compute a large number of terms. *) split[digits_, pos_] := Module[{pos2}, pos2 = Transpose[{Join[ {1}, Most[pos+1]], pos}]; FromDigits[Take[digits, {#[[1]], #[[2]]}]]& /@ pos2]; sel[n_] := Module[{digits, ip, ip2, accu, nn}, digits = IntegerDigits[n^2]; ip = IntegerPartitions[Length[digits]]; ip2 = Flatten[ Permutations /@ ip, 1]; accu = Accumulate /@ ip2; nn = split[ digits, #]& /@ accu; SelectFirst[nn, Length[#]>1 && Flatten[ IntegerDigits[#] ] == digits && AllTrue[#, #>0 && IntegerQ[Sqrt[#]]&]&] ]; k = 1; Reap[Do[If[(s = sel[n]) != {}, Print["a(", k++, ") = ", n, " ", n^2, " ", s]; Sow[n]], {n, 1, 10^4}]][[2, 1]] (* Jean-François Alcover, Sep 28 2016 *)
PROG
(Haskell)
a048653 n = a048653_list !! (n-1)
a048653_list = filter (f . show . (^ 2)) [1..] where
f zs = g (init $ tail $ inits zs) (tail $ init $ tails zs)
g (xs:xss) (ys:yss)
| h xs = h ys || f ys || g xss yss
| otherwise = g xss yss
where h ds = head ds /= '0' && a010052 (read ds) == 1
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 d[i] != '0' and issquare(int(d[:i])) and ok(int(d[i:]), c+1):
return True
return False
def aupto(lim): return [r for r in range(lim+1) if ok(r*r, 1)]
print(aupto(650)) # Michael S. Branicky, Jul 10 2021
CROSSREFS
Cf. A048646, A048375, A010052, A000290; subsequence of A128783.
Sequence in context: A328414 A083681 A178660 * A205807 A075696 A061120
KEYWORD
base,nice,nonn
AUTHOR
EXTENSIONS
Corrected and extended by Naohiro Nomoto, Sep 01 2001
Definition clarified by Harvey P. Dale, May 09 2021
STATUS
approved

  NODES
orte 1
see 1
Story 1