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


import <Utilities/Conversion.sl>;
import <Utilities/Sequence.sl>;
 
main(args(2)) :=
	let
		result := firstNKPrimes(1 ... 5, 10);
 
		output[i] := "k = " ++ intToString(i) ++ ": " ++ delimit(intToString(result[i]), ' ');
	in
		delimit(output, '\n');
 
firstNKPrimes(k, N) := firstNKPrimesHelper(k, N, 2, []);
 
firstNKPrimesHelper(k, N, current, result(1)) :=
	let
		newResult := result when not isKPrime(k, current) else result ++ [current]; 
	in
		result when size(result) = N
	else
		firstNKPrimesHelper(k, N, current + 1, newResult);
 
isKPrime(k, n) := size(primeFactorization(n)) = k;