Rare numbers: Difference between revisions
Content added Content deleted
(→{{header|ALGOL 68}}: note) |
(adding lambdatalk) |
||
Line 3,813: | Line 3,813: | ||
39: 8,650,327,689,541,457 |
39: 8,650,327,689,541,457 |
||
40: 8,650,349,867,341,457</pre> |
40: 8,650,349,867,341,457</pre> |
||
=={{header|Lambdatalk}}== |
|||
Just coding the definition of a rare number without any optimization. |
|||
<syntaxhighlight lang="Scheme"> |
|||
{def lt_israre |
|||
{lambda {:n} |
|||
{let { {:n :n} |
|||
{:r {W.reverse :n}} |
|||
} {if {and {> :n :r} |
|||
{isInt {sqrt {+ :n :r}}} |
|||
{isInt {sqrt {- :n :r}}}} |
|||
then :n |
|||
else}}}} |
|||
-> lt_israre |
|||
{S.map lt_israre {S.serie 1 700000}} |
|||
-> 65 621770 // computed in 7650ms |
|||
Testing: |
|||
{S.map lt_israre {S.serie 1 280000000}} |
|||
-> ... crushes Firefox working in my small iPad Pro. |
|||
And so I ask javascript some help: |
|||
LAMBDATALK.DICT["js_israres"] = function() { |
|||
var args = arguments[0].trim().split(" "), |
|||
i0 = Number( args[0] ), |
|||
i1 = Number( args[1] ), |
|||
a = []; |
|||
var israre = function(n) { |
|||
var r = Number( n.toString().split("").reverse().join("") ); |
|||
return (n > r) && (Number.isInteger(Math.sqrt(n+r))) |
|||
&& (Number.isInteger(Math.sqrt(n-r))) |
|||
}; |
|||
for (var i=i0; i < i1; i++) |
|||
if (israre(i)) a.push(i); |
|||
return a |
|||
}; |
|||
Testing: |
|||
{js_israres 1 2050000000} |
|||
-> [65,621770,281089082,2022652202,2042832002]] |
|||
// computed in 784307ms ~ 13 minutes |
|||
Too slow to try to go further. |
|||
</syntaxhighlight> |
|||
=={{header|langur}}== |
=={{header|langur}}== |