50 lines
938 B
Plaintext
50 lines
938 B
Plaintext
c = Compile[{{k, _Integer}},
|
|
Module[{out = {0}, start = 0, stop = 0, rlist = {0}, r = 0,
|
|
sum = 0.0, diff = 0.0, imax = 8, step = 10},
|
|
Do[
|
|
If[j == k, imax = 2, imax = 8];
|
|
Do[
|
|
If[i == 2,
|
|
start = i 10^j + 2;
|
|
stop = (i + 1) 10^j - 1;
|
|
step = 10;
|
|
,
|
|
start = i 10^j;
|
|
stop = (i + 1) 10^j - 1;
|
|
step = 1;
|
|
];
|
|
Do[
|
|
rlist = IntegerDigits[n];
|
|
r = 0;
|
|
Do[
|
|
r += rlist[[ri]] 10^(ri - 1)
|
|
,
|
|
{ri, 1, Length[rlist]}
|
|
];
|
|
If[r != n,
|
|
sum = n + r;
|
|
sum = Sqrt[sum];
|
|
If[Floor[sum] == sum,
|
|
diff = n - r;
|
|
If[diff > 0,
|
|
diff = Sqrt[diff];
|
|
If[Floor[diff] == diff,
|
|
AppendTo[out, n]
|
|
]
|
|
]
|
|
]
|
|
]
|
|
,
|
|
{n, start, stop, step}
|
|
]
|
|
,
|
|
{i, 2, imax, 2}
|
|
]
|
|
,
|
|
{j, 0, k}
|
|
];
|
|
out
|
|
]
|
|
];
|
|
Rest[c[9]] (*takes about 310 sec*)
|