Test de primalité
Exercice · OCaml (option informatique), chapitre 4 — Programmation impérative : références et boucles
Énoncé
Écrire est_premier n avec une boucle while qui s'arrête dès qu'un diviseur est trouvé.
Corrigé
let est_premier n =
if n < 2 then false
else begin
let d = ref 2 and premier = ref true in
while !d * !d <= n && !premier do
if n mod !d = 0 then premier := false;
d := !d + 1
done;
!premier
end
On cherche un diviseur d de 2 à . La référence booléenne premier sert de drapeau : la condition ... && !premier (évaluation paresseuse) arrête la boucle dès qu'un diviseur est trouvé. Le begin … end groupe la séquence de la branche else en une seule expression.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.