ocaml: phase 5.1 euler3.ml baseline (largest prime factor of 13195 = 29)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 27s

PE3's worked example. Trial-division streaming: when the current
factor divides m, divide and update largest; otherwise bump factor:

  let largest_prime_factor n =
    let m = ref n in
    let factor = ref 2 in
    let largest = ref 0 in
    while !m > 1 do
      if !m mod !factor = 0 then begin
        largest := !factor;
        m := !m / !factor
      end else factor := !factor + 1
    done;
    !largest

  largest_prime_factor 13195 = 29  (= 5 * 7 * 13 * 29)

The full PE3 number 600851475143 exceeds JS safe-int (2^53 ≈ 9e15
in float terms; 6e11 is fine but the intermediate 'i mod !factor'
on the way to 6857 can overflow precision). 13195 keeps the program
portable across hosts.

113 baseline programs total.
This commit is contained in:
2026-05-09 22:21:16 +00:00
parent 2a01758f28
commit 320d78a993
3 changed files with 22 additions and 0 deletions

View File

@@ -0,0 +1,15 @@
let largest_prime_factor n =
let m = ref n in
let factor = ref 2 in
let largest = ref 0 in
while !m > 1 do
if !m mod !factor = 0 then begin
largest := !factor;
m := !m / !factor
end else factor := !factor + 1
done;
!largest
;;
largest_prime_factor 13195

View File

@@ -28,6 +28,7 @@
"euler1.ml": 233168,
"euler10.ml": 1060,
"euler2.ml": 4613732,
"euler3.ml": 29,
"euler4_small.ml": 9009,
"euler5.ml": 232792560,
"euler6.ml": 25164150,