Adloun

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 &lt;= n &lt; (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.