Adloun

OCaml (option informatique) · Chapitre 4 · Exercice de TD

Racine carrée entière

Programmation impérative : références et boucles · niveau 3 (difficile)

É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 * !r, entier positif tant que la boucle tourne, qui décroît strictement (!r croît de ). (racine 10 , car .)

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre