diff --git a/Algo/Séminaire/Exercices seminaire.md b/Algo/Séminaire/Exercices seminaire.md index 3532aff..d2f4c6a 100644 --- a/Algo/Séminaire/Exercices seminaire.md +++ b/Algo/Séminaire/Exercices seminaire.md @@ -483,7 +483,7 @@ let is_prime n = n = 2 else let rec check d = - if d = n then + if d*d > n then true else if n mod d = 0 then false @@ -493,6 +493,22 @@ let is_prime n = ``` +## 4.13 - Perfect +```Ocaml +let is_perfect n = + if n < 1 then + invalid_arg "is_perfect: undefinded for n < 1" + else + let rec perfect d = + if n mod d = 0 then + if d*d > n then + true + else + perfect (d + 1) + else + + in perfect d;; +``` ## Hanoi ```Ocaml (* displays moves: source -> destination *)