Objetivo
Crie um programa / função que receba uma entrada N, verifique se Npares aleatórios de números inteiros são relativamente primos e retorne sqrt(6 * N / #coprime).
TL; DR
Esses desafios são simulações de algoritmos que exigem apenas a natureza e seu cérebro (e talvez alguns recursos reutilizáveis) para aproximar o Pi. Se você realmente precisa de Pi durante o apocalipse zumbi, esses métodos não desperdiçam munição ! Existem mais oito desafios por vir. Faça o checkout da caixa de areia para fazer recomendações.
Simulação
O que estamos simulando? Bem, a probabilidade de que dois inteiros aleatórios sejam relativamente primos (por exemplo, coprime ou gcd == 1) é 6/Pi/Pi, portanto, uma maneira natural de calcular Pi seria colher dois baldes (ou punhados) de rochas; conta-os; veja se o seu gcd é 1; repetir. Depois de fazer isso um par muitas vezes, sqrt(6.0 * total / num_coprimes)tenderá para Pi. Se calcular a raiz quadrada no mundo pós-apocalíptico o deixa nervoso, não se preocupe! Existe o método de Newton para isso.
Como estamos simulando isso?
- Aceitar entrada
N - Faça os seguintes
Nhorários:- Gere uniformemente números inteiros positivos aleatórios
iej - Com
1 <= i , j <= 10^6 - Se
gcd(i , j) == 1:result = 1 - Outro:
result = 0
- Gere uniformemente números inteiros positivos aleatórios
- Pegue a soma dos
Nresultados,S - Retorna
sqrt(6 * N / S)
Especificação
- Entrada
- Flexível, receba informações de qualquer uma das formas padrão (por exemplo, parâmetro de função, STDIN) e em qualquer formato padrão (por exemplo, String, Binário)
- Saída
- Flexível, produza de qualquer forma padrão (por exemplo, devolução, impressão)
- Espaço em branco, espaço em branco à direita e à esquerda é aceitável
- Precisão, forneça pelo menos 4 casas decimais de precisão (ou seja
3.1416)
- Pontuação
- O código mais curto vence!
Casos de teste
Sua saída pode não estar alinhada com isso, por causa do acaso. Mas, em média, você deve obter tanta precisão para o valor especificado de N.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6.

N = 1000000ou tudo bem se o programa retornar, por exemplo, um estouro de pilha seNfor muito grande?