(* Exercice 1 *) (* ITERATION 1 *) let eratosthene n = let p = Array.make n true and premier = [] in for k = 2 to n do (* on parcourt le tableau pour tester chaque entier pour voir s'il est premier *) let i= ref 2 in while !i 'a array = # change [| 1;2;3;4;5;6;7;8;9;10 |];; - : int array = [|1; 2; 3; 4; 5; 6; 7; 8; 10; 9|] (* Exercice 3 *) let somme3 a = let n = Array.length a and min = ref a.(0) in for i = 0 to n-1 do for j = i to n-1 do let s = ref a.(i) in for k = i+1 to j do s:= !s + a.(k); done; if !s < !min then min:= !s done; done; !min;; let somme2 a = let n = Array.length a and min = ref a.(0) in for i = 0 to n-1 do let s = ref 0 in for j = i to n-1 do s:= !s + a.(j); if !s < !min then min := !s; done; done; !min;; let rec iterer f n x = if n = 0 then x else iterer f (n-1) (f x);; let somme2 a = let n = Array.length a in fst ( iterer ( fun (mini,i) -> let (sf,minif,jf) = iterer ( fun (s,min,j) -> let s' = s + a.(j) in if s' < min then (s',s',j+1) else (s',min,j+1)) n-i+1 (0,mini,i) in (minif,i+1)) n (a.(0),0));;