46 lines
886 B
Lua
46 lines
886 B
Lua
function buildArray(size, value)
|
|
local tbl = {}
|
|
for i=1, size do
|
|
table.insert(tbl, value)
|
|
end
|
|
return tbl
|
|
end
|
|
|
|
MU_MAX = 1000000
|
|
sqroot = math.sqrt(MU_MAX)
|
|
mu = buildArray(MU_MAX, 1)
|
|
|
|
for i=2, sqroot do
|
|
if mu[i] == 1 then
|
|
-- for each factor found, swap + and -
|
|
for j=i, MU_MAX, i do
|
|
mu[j] = mu[j] * -i
|
|
end
|
|
-- square factor = 0
|
|
for j=i*i, MU_MAX, i*i do
|
|
mu[j] = 0
|
|
end
|
|
end
|
|
end
|
|
|
|
for i=2, MU_MAX do
|
|
if mu[i] == i then
|
|
mu[i] = 1
|
|
elseif mu[i] == -i then
|
|
mu[i] = -1
|
|
elseif mu[i] < 0 then
|
|
mu[i] = 1
|
|
elseif mu[i] > 0 then
|
|
mu[i] = -1
|
|
end
|
|
end
|
|
|
|
print("First 199 terms of the mobius function are as follows:")
|
|
io.write(" ")
|
|
for i=1, 199 do
|
|
io.write(string.format("%2d ", mu[i]))
|
|
if (i + 1) % 20 == 0 then
|
|
print()
|
|
end
|
|
end
|