Sha256: 84814b6d97c94c6c3251b88b843beb6a3b8e0bef9f89ac2ef92eb77a0974d957

Contents?: true

Size: 718 Bytes

Versions: 177

Compression:

Stored size: 718 Bytes

Contents

open Core.Std

let square_root_trunc n =
    (* Square root is not defined on int64 but it is on big_int *)
    let open Big_int in
    big_int_of_int64 n |> sqrt_big_int |> int64_of_big_int

let rec factors_of' = function
    | 1L -> []
    | n  -> factors_of_loop n
and factors_of_loop n =
    let open Int64 in
    let i = ref (square_root_trunc n) in
    let res = ref None in
    while !i > 1L && Option.is_none !res do
        let i' = !i in
        if (rem n i') = 0L then (
            let m = n / i' in
            res := Some (List.concat [factors_of' i'; factors_of' m]));
        i := (i' - 1L);
    done;
    Option.value ~default:[n] !res

let factors_of n = List.sort ~cmp:Int64.compare (factors_of' n)

Version data entries

177 entries across 177 versions & 1 rubygems

Version Path
trackler-2.1.0.21 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.20 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.19 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.18 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.17 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.16 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.15 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.14 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.13 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.12 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.11 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.10 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.9 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.8 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.7 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.6 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.5 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.4 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.3 tracks/ocaml/exercises/prime-factors/example.ml
trackler-2.1.0.2 tracks/ocaml/exercises/prime-factors/example.ml