A Tau number is a positive integer divisible by the count of its positive divisors.



Task
Show the first   100   Tau numbers.
The numbers shall be generated during run-time (i.e. the code may not contain string literals, sets/arrays of integers, or alike).



Related task
  Tau function


function divisor_count(n)
    local total = 1
 
    -- Deal with powers of 2 first
    while (n & 1) == 0 do
        total = total + 1
        n = n >> 1
    end
    -- Odd prime factors up to the square root
    local p = 3
    while p * p <= n do
        local count = 1
        while n % p == 0 do
            count = count + 1
            n = math.floor(n / p)
        end
        total = total * count
        p = p + 2
    end
    -- If n > 1 then it's prime
    if n > 1 then
        total = total * 2
    end
    return total
end
 
local limit = 100
local count = 0
print("The first " .. limit .. " tau numbers are:")
local n = 1
while count < limit do
    if n % divisor_count(n) == 0 then
        io.write(string.format("%6d", n))
        count = count + 1
        if count % 10 == 0 then
            print()
        end
    end
    n = n + 1
end