Gol
Cree un programa / función que tome una entrada N
, verifique si N
los pares aleatorios de enteros son relativamente primos y retorna sqrt(6 * N / #coprime)
.
TL; DR
Estos desafíos son simulaciones de algoritmos que solo requieren la naturaleza y su cerebro (y tal vez algunos recursos reutilizables) para aproximarse a Pi. Si realmente necesitas Pi durante el apocalipsis zombie, ¡estos métodos no desperdician munición ! Hay ocho desafíos más por venir. Revisa la publicación de sandbox para hacer recomendaciones.
Simulación
¿Qué estamos simulando? Bueno, la probabilidad de que dos enteros aleatorios sean relativamente primos (es decir, coprime o mcd == 1) es 6/Pi/Pi
, por lo que una forma natural de calcular Pi sería recoger dos cubos (o puñados) de rocas; cuéntalos; ver si su mcd es 1; repetir. Después de hacer esto un par de veces, sqrt(6.0 * total / num_coprimes)
tenderá a hacerlo Pi
. Si calcular la raíz cuadrada en el mundo post-apocalíptico te pone nervioso, ¡no te preocupes! Hay un método de Newton para eso.
¿Cómo estamos simulando esto?
- Tomar entrada
N
- Haz los siguientes
N
horarios:- Generar uniformemente enteros positivos al azar,
i
yj
- Con
1 <= i , j <= 10^6
- Si
gcd(i , j) == 1
:result = 1
- Más:
result = 0
- Generar uniformemente enteros positivos al azar,
- Toma la suma de los
N
resultados,S
- Regreso
sqrt(6 * N / S)
Especificación
- Entrada
- Flexible, tome la entrada en cualquiera de las formas estándar (por ejemplo, parámetro de función, STDIN) y en cualquier formato estándar (por ejemplo, cadena, binario)
- Salida
- Flexible, dé salida en cualquiera de las formas estándar (por ejemplo, devolución, impresión)
- El espacio en blanco, el espacio en blanco al final y al final es aceptable
- Precisión, proporcione al menos 4 decimales de precisión (es decir
3.1416
)
- Tanteo
- ¡El código más corto gana!
Casos de prueba
Es posible que su salida no se alinee con estos, debido a la posibilidad aleatoria. Pero en promedio, debe obtener esta precisión para el valor dado de N
.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6
.
N = 1000000
o está bien si el programa regresa, por ejemplo, un desbordamiento de pila siN
es demasiado grande?