Rare numbers: Difference between revisions
Content added Content deleted
(Added Easylang) |
(Added Lua) |
||
Line 3,922: | Line 3,922: | ||
<syntaxhighlight lang="langur">val .reverse = f toNumber join reverse split .n</syntaxhighlight> |
<syntaxhighlight lang="langur">val .reverse = f toNumber join reverse split .n</syntaxhighlight> |
||
=={{header|Lua}}== |
|||
{{Trans|Phix|niave version, via FreeBASIC and Algol 68}} |
|||
<syntaxhighlight lang="lua"> |
|||
do -- find the first five rare numbers |
|||
local function revn ( na ) |
|||
local n, r = na, 0 |
|||
while n > 0 do |
|||
r = r * 10 r = r + ( n % 10 ) |
|||
n = math.floor( n / 10 ) |
|||
end |
|||
return r |
|||
end -- revn |
|||
local nd, count, lim, n = 2, 0, 90, 20 |
|||
local oddNd = nd % 2 == 1 |
|||
while true do |
|||
n = n + 1 |
|||
local r = revn( n ) |
|||
if r < n then |
|||
local s, d = n + r, n - r |
|||
local tryThis = false |
|||
if oddNd |
|||
then tryThis = d % 1089 == 0 |
|||
else tryThis = s % 121 == 0 |
|||
end |
|||
if tryThis then |
|||
local rootS = math.sqrt( s ) |
|||
if rootS == math.floor(rootS ) |
|||
then |
|||
local rootD = math.sqrt( d ) |
|||
if rootD == math.floor( rootD ) |
|||
then |
|||
count = count + 1 |
|||
io.write( count, ": ", n, "\n" ) |
|||
if count >= 5 then os.exit() end |
|||
end |
|||
end |
|||
end |
|||
if n == lim |
|||
then |
|||
lim = lim * 10 |
|||
nd = nd + 1 |
|||
oddNd = not oddNd |
|||
n = math.floor( lim / 9 ) * 2 |
|||
end |
|||
end |
|||
end |
|||
end |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
1: 65 |
|||
2: 621770 |
|||
3: 281089082 |
|||
4: 2022652202 |
|||
5: 2042832002 |
|||
</pre> |
|||
=={{header|Mathematica}}/{{header|Wolfram Language}}== |
=={{header|Mathematica}}/{{header|Wolfram Language}}== |