Écrivez une fonction ou un programme complet qui prend un nombre positif n
et exécute les n
étapes d'un algorithme itératif pour calculer π qui a une convergence quadratique (c'est-à-dire qu'il double approximativement le nombre de chiffres précis à chaque itération) puis retourne ou imprime 2 n chiffres corrects (y compris le début 3). Un tel algorithme est l'algorithme de Gauss – Legendre , mais vous êtes libre d'utiliser un algorithme différent si vous préférez.
Exemples:
entrée 1
→ sortie 3.1
entrée 2
→ sortie 3.141
entrée 5
→ sortie3.1415926535897932384626433832795
Exigences:
- Chaque itération de l'algorithme doit effectuer un nombre constant d'opérations de base telles que l'addition, la soustraction, la multiplication, la division, la puissance et la racine (avec exposant / degré entier) - chacune de ces opérations sur les "grands" nombres entiers / décimaux est comptée comme une paire s'il implique une ou plusieurs boucles en interne. Pour être clair, les fonctions trigonométriques et les pouvoirs impliquant des nombres complexes ne sont pas des opérations de base.
- L'algorithme devrait avoir une étape d'initialisation qui doit également avoir un nombre constant d'opérations.
- Si l'algorithme a besoin de 1 ou 2 itérations supplémentaires pour arriver à 2 n chiffres corrects, vous pouvez effectuer jusqu'à
n+2
itérations au lieu de simplementn
. - Si ce n'était pas assez clair, après les 2 n chiffres corrects , votre programme ne doit pas imprimer autre chose (comme des chiffres plus corrects, des chiffres incorrects ou les œuvres complètes de Shakespeare).
- Votre programme doit prendre en charge des valeurs comprises
n
entre 1 et au moins 20. - Votre programme ne devrait pas prendre plus d'une heure pour
n
= 20 sur un ordinateur moderne (ce n'est pas une règle stricte, mais essayez de le garder raisonnable). - Le programme ne doit pas obtenir plus de 20 chiffres précis après l'initialisation et la première itération de l'algorithme.
- Le programme doit être exécutable sous Linux en utilisant un logiciel disponible gratuitement.
- Le code source doit utiliser uniquement des caractères ASCII.
Notation:
Golf de code simple, le code le plus court gagne.
Gagnant:
Le gagnant est Digital Trauma, j'ai finalement terminé d'exécuter son code sur n = 20 (je plaisante). Un prix spécial va à primo pour sa solution python très rapide et son algorithme différent :)
~q^(n^2)
selon la 1ère section là-bas et ~q^2
selon la 2ème section là-bas.