def heron(a, n): """renvoie une approximation de la racine carrée de a après n boucles de calculs""" x=1 # on peut partir de 1 pour n'importe quel nombre a for i in range (n): x=(x+a/x)/2 return x def hero(a, p): """renvoie une approximation de la racine carrée de a avec au minimum une précision p n est le nombre de boucles effectuées""" x=1 x_= 0 n=0 while abs(x-x_)>p : x_=x x=(x+a/x)/2 n +=1 return x,n def rac_carr_heron(a, p): x = 1 # on part de x=1 y = (x+a/x)/2 # On affecte à y la moyenne de x et de a/x b = 0 # b va compter le nombre de boucles efectuées while abs(x-y) > p: # Tant que l'écart entre 2 valeurs successives dépasse la précision p x = y # on remplace la valeur de x par celle de y y = (x+a/x)/2 # On affecte à y la moyenne de x et de a/x b = b + 1 # À chaque boucle, on ajoute 1 à b return f"En {b} boucles, {x} et {y} encadrent √{a} avec la précision {p}"