Rare numbers: Difference between revisions
Content added Content deleted
No edit summary |
(Added J implementation) |
||
Line 2,620: | Line 2,620: | ||
75 8,320,411,466,598,809,138 19: 00:12:48.590 00:15:14.316 |
75 8,320,411,466,598,809,138 19: 00:12:48.590 00:15:14.316 |
||
</pre> |
</pre> |
||
=={{header|J}}== |
|||
The following function determines whether a given integer is "rare", as can be seen in the sample output. |
|||
To use it to find rare numbers, one would simply apply it to each integer seriatim, and keep the numbers where its output is true (I.@:rare i. AS_HIGH_AS_YOU_WANT_TO_CHECK); but since these numbers are, well, rare, actually doing so would take a very long time. |
|||
<lang j>rare =: ( np@:] *. (nbrPs rr) ) b10 |
|||
np =: -.@:(-: |.) NB. Not palindromic |
|||
nbrPs =: > *. sdPs NB. n is Bigger than R and the perfect square constraint is satisfied |
|||
sdPs =: + *.&:ps - NB. n > rr and both their sum and difference are perfect squares |
|||
ps =: 0 = 1 | %: NB. Perfect square (integral sqrt) |
|||
rr =: 10&#.@:|. NB. Do note we do reverse the digits twice (once here, once in np) |
|||
b10 =: 10&#.^:_1 NB. Base 10 digits</lang> |
|||
{{out}} |
|||
<lang j> NB. From OEIS |
|||
R =: 65 621770 281089082 2022652202 2042832002 868591084757 872546974178 872568754178 6979302951885 20313693904202 20313839704202 20331657922202 20331875722202 20333875702202 40313893704200 |
|||
rare"0 R |
|||
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |