Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
racine_entiere [2015/03/10 06:42] tyrtamos |
racine_entiere [2015/03/14 09:36] tyrtamos |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Calcul de la racine kième entière d'un nombre entier de longueur quelconque ====== | ====== Calcul de la racine kième entière d'un nombre entier de longueur quelconque ====== | ||
+ | |||
+ | **En cours de modification** | ||
[modifié en mars 2015: passage à Python 3 + généralisation de la méthode de Héron d' | [modifié en mars 2015: passage à Python 3 + généralisation de la méthode de Héron d' | ||
Ligne 43: | Ligne 45: | ||
# trouve une valeur approchée de la racine (important pour les grds nb) | # trouve une valeur approchée de la racine (important pour les grds nb) | ||
- | rac1, i = n, 0 | + | rac1, i = n, 1 |
- | while rac1 > 0: | + | while rac1 != 0: |
rac1 >>= 1 | rac1 >>= 1 | ||
i += 1 # i = compteur du nb de positions binaires utilisées | i += 1 # i = compteur du nb de positions binaires utilisées | ||
Ligne 50: | Ligne 52: | ||
# calcule la racine en partant de la racine approchée rac1 | # calcule la racine en partant de la racine approchée rac1 | ||
+ | delta = n - 1 | ||
while True: | while True: | ||
rac2 = (rac1 + n // rac1) >> 1 | rac2 = (rac1 + n // rac1) >> 1 | ||
- | if rac2 == rac1: | + | if rac2 >= rac1 and delta <= 1: |
- | return rac2 | + | return |
+ | delta = abs(rac2 - rac1) # on garde pour la prochaine boucle | ||
rac1 = rac2 | rac1 = rac2 | ||
</ | </ | ||
Ligne 102: | Ligne 106: | ||
# calcul de la racine en partant de la racine approchée rac1 | # calcul de la racine en partant de la racine approchée rac1 | ||
- | delta = abs(n - 1) | + | delta = n - 1 |
km1 = k - 1 | km1 = k - 1 | ||
while True: | while True: |