Arithmetic numbers: Difference between revisions

(Added PL/M)
Line 821:
1000000 1228663 905043
</pre>
 
=={{header|Lua}}==
Translated from Python
<lang Lua>local function factors (n)
local f, i = {1, n}, 2
while true do
local j = n//i -- floor division by Lua 5.3
if j < i then
break
elseif j == i and i * j == n then
table.insert (f, i)
break
elseif i * j == n then
table.insert (f, i)
table.insert (f, j)
end
i = i + 1
end
return f
end
 
local function sum (f)
local s = 0
for i, value in ipairs (f) do
s = s + value
end
return s
end
 
local arithmetic_count = 1
local composite_count = 0
local hundr = {1}
 
for n = 2, 1000000 do
local f = factors (n)
local s = sum (f)
local l = #f
if (s/l)%1 == 0 then
arithmetic_count = arithmetic_count + 1
if l > 2 then
composite_count = composite_count + 1
end
if arithmetic_count <= 100 then
table.insert (hundr, n)
end
if arithmetic_count == 100 then
for i = 0, 9 do
print (table.concat(hundr, ', ', 10*i+1, 10*i+10))
end
elseif arithmetic_count == 1000
or arithmetic_count == 10000
or arithmetic_count == 100000
or arithmetic_count == 1000000 then
print (arithmetic_count..'th arithmetic number is '..(n))
print ('Number of composite arithmetic numbers <= '..(n)..': '..composite_count)
end
end
end</lang>{{out}}
<pre>1, 3, 5, 6, 7, 11, 13, 14, 15, 17
19, 20, 21, 22, 23, 27, 29, 30, 31, 33
35, 37, 38, 39, 41, 42, 43, 44, 45, 46
47, 49, 51, 53, 54, 55, 56, 57, 59, 60
61, 62, 65, 66, 67, 68, 69, 70, 71, 73
77, 78, 79, 83, 85, 86, 87, 89, 91, 92
93, 94, 95, 96, 97, 99, 101, 102, 103, 105
107, 109, 110, 111, 113, 114, 115, 116, 118, 119
123, 125, 126, 127, 129, 131, 132, 133, 134, 135
137, 138, 139, 140, 141, 142, 143, 145, 147, 149
1000th arithmetic number is 1361
Number of composite arithmetic numbers <= 1361: 782
10000th arithmetic number is 12953
Number of composite arithmetic numbers <= 12953: 8458
100000th arithmetic number is 125587
Number of composite arithmetic numbers <= 125587: 88219
(Done in 35.94 seconds)</pre>
 
=={{header|Pascal}}==
Anonymous user