30 lines
924 B
Lua
30 lines
924 B
Lua
-- Find the first 20 antiprimes.
|
|
|
|
-- returns a table of the first goal antiprimes
|
|
function antiprimes(goal)
|
|
local maxNumber = 0
|
|
local ndc = {} -- table of divisor counts - initially empty
|
|
local list, number, mostFactors = {}, 1, 0
|
|
while #list < goal do
|
|
if number > #ndc then
|
|
-- need a bigger table of divisor counts
|
|
maxNumber = maxNumber + 5000
|
|
ndc = {}
|
|
for i = 1, maxNumber do ndc[ i ] = 1 end
|
|
for i = 2, maxNumber do
|
|
for j = i, maxNumber, i do ndc[ j ] = ndc[ j ] + 1 end
|
|
end
|
|
end
|
|
local factors = ndc[ number ]
|
|
if factors > mostFactors then
|
|
table.insert( list, number )
|
|
mostFactors = factors
|
|
end
|
|
number = number + 1
|
|
end
|
|
return list
|
|
end
|
|
|
|
-- display the antiprimes
|
|
io.write( table.concat( antiprimes( 20 ), " " ) )
|