Racine carrée entière
Exercice · OCaml (option informatique), chapitre 4 — Programmation impérative : références et boucles
Énoncé
Écrire racine n () renvoyant le plus grand entier tel que , avec une boucle while, et prouver sa terminaison par un variant.
Corrigé
let racine n =
let r = ref 0 in
while (!r + 1) * (!r + 1) <= n do
r := !r + 1
done;
!r
On incrémente r tant que (r+1)^2 ne dépasse pas n. À la sortie, r^2 <= n < (r+1)^2 : c'est bien la partie entière de . Variant : n - !r <em> !r, entier positif tant que la boucle tourne, qui décroît strictement (!r croît de ). (racine 10 , car .)*
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.