IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Vote des utilisateurs
1 
0 
Détails
Licence : Non renseignée
Mise en ligne le 30 novembre 2010
Plate-formes : Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation

Calcul de la racine carrée d'un nombre

Ce code permet de calculer la racine carrée entière d'un nombre entier (>= 1) sans utiliser les flottants, en utilisant la méthode des approximations successives. Cette fonction est plus efficace que sqrt() avec gcc sans optimisations. Par contre, avec les optimisations, sqrt() écrase cette fonction. L'avantage principal est ici d'éviter d'utiliser les flottants et la bibliothèque mathématique et d'assurer une bonne vitesse de calcul sur les machines avec des co-processeurs faibles ou sans co-processeur.
Avatar de grim7reaper
Membre éclairé https://www.developpez.com
Le 16/07/2013 à 6:56
Non, le résultat est correct :
Citation Envoyé par Wikipédia
In number theory, the integer square root (isqrt) of a positive integer n is the positive integer m which is the greatest integer less than or equal to the square root of n
1*1 = 1 <= 3
2*2 = 4 > 3
Donc le résultat attendu est bien 1.

Sinon, est-il possible de savoir comment la comparaison avec sqrt a été réalisée&#8239;?
Il me semble que le livre Hacker's Delight propose aussi une version de isqrt. Elle est semblable à celle-ci (i.e basé sur Newton), mais avec un choix de valeur initiale dépendant de la valeur d’entrée. J’aimerai bien évaluer jusqu’à quel point cela influe sur les performances.
Avatar de Rhadamante
Membre du Club https://www.developpez.com
Le 15/07/2013 à 20:11
Ce programme n'arrondit pas tres bien par ex pour 3 racine apres arrondissement doit donner 2 et non 1!!!!!
Avatar de kingok
Nouveau Candidat au Club https://www.developpez.com
Le 04/11/2013 à 23:16
bonjour
peut tu expliquer ce programme
http://c.developpez.com/telecharger/...ee-d-un-nombre

je sais que la valeur de la racine de N est la limite de ca
rn+1 = (rn + N/ rn)/2

mais j'ai pas compris comment tu a trouver
r1 = (a + 1) / 2;
et aussi la boucle
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.