let prime = Array.create (max + 1) true
for i in 2 .. max |> float |> sqrt |> int do
for j in i * i .. i .. max do
|> Array.mapi (fun i p -> i, p)
|> Array.choose (fun (i, p) -> if p then Some i else None)
|> Seq.takeWhile (fun p -> p <= n)
|> Seq.filter (fun p -> n % p = 0)
|> Seq.map (snd >> (+) 1)