Files
rose-ash/lib/ocaml/baseline/prime_factors.ml
giles af38d98583
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 28s
ocaml: phase 5.1 prime_factors.ml baseline (trial-division, 360 factor sum = 17)
Three refs threading through a while loop:
  m       remaining quotient
  d       current divisor
  result  accumulator (built in reverse, List.rev at end)

  while !m > 1 do
    if !m mod !d = 0 then begin
      result := !d :: !result;
      m := !m / !d
    end else
      d := !d + 1
  done

360 = 2^3 * 3^2 * 5 factors to [2;2;2;3;3;5], sum 17.

60 baseline programs total — milestone.
2026-05-09 12:44:02 +00:00

17 lines
275 B
OCaml

let factor n =
let result = ref [] in
let m = ref n in
let d = ref 2 in
while !m > 1 do
if !m mod !d = 0 then begin
result := !d :: !result;
m := !m / !d
end else
d := !d + 1
done;
List.rev !result
;;
List.fold_left (+) 0 (factor 360)