20 lines
477 B
Forth
20 lines
477 B
Forth
let rec genFactor (f, n) =
|
|
if f > n then None
|
|
elif n % f = 0 then Some (f, (f, n/f))
|
|
else genFactor (f+1, n)
|
|
|
|
|
|
let factorsOf (num) =
|
|
Seq.unfold (fun (f, n) -> genFactor (f, n)) (2, num)
|
|
|
|
let kFactors k = Seq.unfold (fun n ->
|
|
let rec loop m =
|
|
if Seq.length (factorsOf m) = k then m
|
|
else loop (m+1)
|
|
let next = loop n
|
|
Some(next, next+1)) 2
|
|
|
|
[1 .. 5]
|
|
|> List.iter (fun k ->
|
|
printfn "%A" (Seq.take 10 (kFactors k) |> Seq.toList))
|