LeetCode 2523. Closest Prime Numbers in Range in F#

URL

Closest Prime Numbers in Range - LeetCode

Code

https://github.com/syohex/dotnet-study/tree/master/fsharp/leetcode/challenge/202503/closest_prime_numbers_in_range/main.fsx

let primes (left: int) (right: int) : bool[] =
    let rec fillPrimes n i limit (ps: bool[]) =
        let index = n * i

        if index > limit then
            ps
        else
            ps.[index] <- false
            fillPrimes n (i + 1) limit ps

    let rec primes' n (ps: bool[]) =
        if n > right then
            ps
        else if not ps.[n] then
            primes' (n + 1) ps
        else
            let ps = fillPrimes n 2 right ps
            primes' (n + 1) ps

    let ps = Array.init (right + 1) (fun _ -> true)
    ps.[0] <- false
    ps.[1] <- false
    primes' 2 ps