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
sub almostPrime(n, k)
    local divisor, count
 
    divisor = 2
 
    while(count < (k + 1) and n <> 1)
        if not mod(n, divisor) then
            n = n / divisor
            count = count + 1
        else
            divisor = divisor + 1
        end if
    wend
    return count = k
end sub
 
// Generates table containing first ten k-almost primes for given k
sub kList(k, kTab())
    local n, i
 
    n = 2^k : i = 1
    while(i < 11)
        if almostPrime(n, k) then
            kTab(i) = n
            i = i + 1
        end if
        n = n + 1
    wend
end sub
 
// Main procedure, displays results from five calls to kList()
dim kTab(10)
for k = 1 to 5
    print "k = ", k, " : ";
    kList(k, kTab())
    for n = 1 to 10
        print kTab(n), ", ";
    next
    print "..."
next