(** pgcd : int -> int -> int description : renvoie le pgcd de deux entiers non nuls a : entier dont on cherche le pgcd avec b b : entier dont on cherche le pgcd avec a returns : pgcd(a, b) précondition : a > 0 et b > 0 *) let rec pgcd a b = if a = 0 || b = 0 then failwith "entrer deux entiers non nuls"; let abs x = if x < 0 then -x else x in let a = abs a in let b = abs b in if a = b then a else if a > b then pgcd (a - b) b else pgcd a (b - a) (* tests unitaires *) let%test _ = pgcd 1 1 = 1 let%test _ = pgcd 10 25 = 5;; let%test _ = pgcd (-10) 25 = 5;; let%test _ = pgcd 10 (-25) = 5;; let%test _ = pgcd (-10) (-25) = 5;; (* let%test _ = pgcd 0 25 = failwith "entrer deux entiers non nuls";; let%test _ = pgcd 10 0 = failwith "entrer deux entiers non nuls";; let%test _ = pgcd 0 = failwith "entrer deux entiers non nuls";; *)