RosettaCodeData/Task/Almost-prime/Wren/almost-prime.wren
2023-07-01 13:44:08 -04:00

26 lines
505 B
Text

var kPrime = Fn.new { |n, k|
var nf = 0
var i = 2
while (i <= n) {
while (n%i == 0) {
if (nf == k) return false
nf = nf + 1
n = (n/i).floor
}
i = i + 1
}
return nf == k
}
var gen = Fn.new { |k, n|
var r = List.filled(n, 0)
n = 2
for (i in 0...r.count) {
while (!kPrime.call(n, k)) n = n + 1
r[i] = n
n = n + 1
}
return r
}
for (k in 1..5) System.print("%(k) %(gen.call(k, 10))")