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,

View File

@@ -407,6 +407,12 @@ _Newest first._
binary search tree (`type 'a tree = Leaf | Node of 'a * 'a tree *
'a tree`) with insert + in-order traversal. Tests parametric ADT,
recursive match, List.append, List.fold_left.
- 2026-05-09 Phase 5.1 — euler3.ml baseline (largest prime factor of
13195 = 29; PE3's worked example). Trial-division streaming: when
the current factor divides m, divide and update largest; otherwise
bump factor. Numbers like 600851475143 (the actual PE3) exceed JS
safe-int (2^53 ≈ 9e15), so 13195 keeps the program portable. 113
baseline programs total.
- 2026-05-09 Phase 5.1 — euler7.ml baseline (100th prime = 541;
scaled-down PE7 which asks for the 10001st = 104743). Trial-
division within an outer while loop searching forward from 2,