23 lines
589 B
Plaintext
23 lines
589 B
Plaintext
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;
|