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


let rec genFactor (f, n) =
    if f > n then None
    elif n % f = 0 then Some (f, (f, n/f))
    else genFactor (f+1, n)
 
 
let factorsOf (num) =
    Seq.unfold (fun (f, n) -> genFactor (f, n)) (2, num)
 
let kFactors k = Seq.unfold (fun n ->
    let rec loop m =
        if Seq.length (factorsOf m) = k then m
        else loop (m+1)
    let next = loop n
    Some(next, next+1)) 2
 
[1 .. 5]
|> List.iter (fun k ->
        printfn "%A" (Seq.take 10 (kFactors k) |> Seq.toList))