Rare numbers: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 3,717: | Line 3,717: | ||
<lang langur>val .reverse = f toNumber join reverse split .n</lang> |
<lang langur>val .reverse = f toNumber join reverse split .n</lang> |
||
=={{header|Mathematica}}== |
|||
<lang Mathematica>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*)</lang> |
|||
{{out}} |
|||
<pre>{65, 621770, 281089082, 2022652202, 2042832002}</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |