je pense que la technique la mieux est la dichotomie :
U0 = a / 4
Un = (Un-1 + (a / Un-1)) / 2
en C, ca donne :
int racine(long int nbr)
{
long int borne[2] = {0, nbr};
long int result = nbr/2;
while (borne[1]-borne[0] > 1) // precision de 1 puisque c'est des entiers
{
if (nbr < result*result) borne[1] = result; else borne[0] = result;
result = (borne[0]+borne[1])/2;
}
return result;
}
mais cette technique peut aussi etre assez interessante pour les petits nbrs :
int racine(long int nbr)
{
int i = 1;
int sqrt = 0;
while(nbr-i >= 0)
{
nbr -= i;
i += 2;
sqrt++;
}
return sqrt;
}
euh rien
[edit]Edité par jpflori le 27-01-2002 à 16:54:04[/edit]
Y a deux fesses qui sont sur la plage et l'une dit à l'autre :
"Qu'est ce qu'on fait maintenant ?"
Et l'autre lui répond :
"Ben PROUT !!!"