Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 28s
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.
17 lines
275 B
OCaml
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)
|