Escreva uma função ou programa completo que leva um número positivo n
e executa n
passos de um algoritmo iterativo para calcular π que tem convergência quadrática (ou seja, aproximadamente dobra o número de dígitos precisos em cada iteração), em seguida, retorna ou imprime 2 n dígitos corretos (incluindo o começo 3). Um desses algoritmos é o algoritmo de Gauss – Legendre , mas você pode usar outro algoritmo, se preferir.
Exemplos:
entrada 1
→ saída 3.1
entrada 2
→ saída 3.141
entrada 5
→ saída3.1415926535897932384626433832795
Requisitos:
- Cada iteração do algoritmo deve executar um número constante de operações básicas, como adição, subtração, multiplicação, divisão, potência e raiz (com expoente inteiro / grau) - cada operação em números "grandes" inteiros / decimais é contada como uma única se envolver um ou mais loops internamente. Para ser claro, funções trigonométricas e potências envolvendo números complexos não são operações básicas.
- Espera-se que o algoritmo tenha uma etapa de inicialização que também deve ter um número constante de operações.
- Se o algoritmo precisar de 1 ou 2 mais iterações para obter 2 n dígitos corretos, você pode executar até
n+2
iterações em vez de apenasn
. - Se não estiver claro o suficiente, após os 2 n dígitos corretos , seu programa não deverá imprimir mais nada (como dígitos mais corretos, dígitos errados ou as obras completas de Shakespeare).
- Seu programa deve suportar valores de
n
1 a pelo menos 20. - Seu programa não deve demorar mais de uma hora para
n
= 20 em um computador moderno (não é uma regra difícil, mas tente mantê-lo razoável). - O programa não deve obter mais de 20 dígitos precisos após a inicialização e a primeira iteração do algoritmo.
- O programa deve ser executável no Linux usando software disponível gratuitamente.
- O código fonte deve usar apenas caracteres ASCII.
Pontuação:
Código simples de golfe, o código mais curto vence.
Vencedora:
O vencedor é o Digital Trauma, eu finalmente terminei de executar o código dele em n = 20 (apenas brincando). Prêmio especial vai para primo por sua solução python muito rápida e algoritmo diferente :)
~q^(n^2)
acordo com a 1ª seção lá e de ~q^2
acordo com a 2ª seção lá.