import ; import ; 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;