A   k-Almost-prime   is a natural number   



n


{\displaystyle n}

   that is the product of   



k


{\displaystyle k}

   (possibly identical) primes.



Example

1-almost-primes,   where   



k
=
1


{\displaystyle k=1}

,   are the prime numbers themselves.

2-almost-primes,   where   



k
=
2


{\displaystyle k=2}

,   are the   semiprimes.



Task

Write a function/method/subroutine/... that generates k-almost primes and use it to create a table here of the first ten members of k-Almost primes for   



1
<=
K
<=
5


{\displaystyle 1<=K<=5}

.



Related tasks

   Semiprime
   Category:Prime Numbers


-- Returns boolean indicating whether n is k-almost prime
function almostPrime (n, k)
    local divisor, count = 2, 0
    while count < k + 1 and n ~= 1 do
        if n % divisor == 0 then
            n = n / divisor
            count = count + 1
        else
            divisor = divisor + 1
        end
    end
    return count == k
end
 
-- Generates table containing first ten k-almost primes for given k
function kList (k)
    local n, kTab = 2^k, {}
    while #kTab < 10 do
        if almostPrime(n, k) then
            table.insert(kTab, n)
        end
        n = n + 1
    end
    return kTab
end
 
-- Main procedure, displays results from five calls to kList()
for k = 1, 5 do
    io.write("k=" .. k .. ": ")
    for _, v in pairs(kList(k)) do
        io.write(v .. ", ")
    end
    print("...")
end