37 lines
849 B
D
37 lines
849 B
D
import std.stdio, std.algorithm, std.traits;
|
|
|
|
Unqual!T[] decompose(T)(in T number) pure nothrow
|
|
in {
|
|
assert(number > 1);
|
|
} body {
|
|
typeof(return) result;
|
|
Unqual!T n = number;
|
|
|
|
for (Unqual!T i = 2; n % i == 0; n /= i)
|
|
result ~= i;
|
|
for (Unqual!T i = 3; n >= i * i; i += 2)
|
|
for (; n % i == 0; n /= i)
|
|
result ~= i;
|
|
|
|
if (n != 1)
|
|
result ~= n;
|
|
return result;
|
|
}
|
|
|
|
void main() {
|
|
enum outLength = 10; // 10 k-th almost primes.
|
|
|
|
foreach (immutable k; 1 .. 6) {
|
|
writef("K = %d: ", k);
|
|
auto n = 2; // The "current number" to be checked.
|
|
foreach (immutable i; 1 .. outLength + 1) {
|
|
while (n.decompose.length != k)
|
|
n++;
|
|
// Now n is K-th almost prime.
|
|
write(n, " ");
|
|
n++;
|
|
}
|
|
writeln;
|
|
}
|
|
}
|