Inspirado en este video de tecmath .
Se x
puede encontrar una aproximación de la raíz cuadrada de cualquier número tomando la raíz cuadrada entera s
(es decir, el entero más grande de ese tipo s * s ≤ x
) y luego calculando s + (x - s^2) / (2 * s)
. Llamemos a esto aproximación S(x)
. (Nota: esto es equivalente a aplicar un paso del método Newton-Raphson).
Aunque esto tiene peculiaridad, donde S (n ^ 2 - 1) siempre será √ (n ^ 2), pero en general será muy preciso. En algunos casos más grandes, esto puede tener una precisión> 99.99%.
Entrada y salida
Tomarás un número en cualquier formato conveniente.
Ejemplos
Formato: Entrada -> Salida
2 -> 1.50
5 -> 2.25
15 -> 4.00
19 -> 4.37 // actually 4.37 + 1/200
27 -> 5.20
39 -> 6.25
47 -> 6.91 // actually 6.91 + 1/300
57 -> 7.57 // actually 7.57 + 1/700
2612 -> 51.10 // actually 51.10 + 2/255
643545345 -> 25368.19 // actually 25,368.19 + 250,000,000/45,113,102,859
35235234236 -> 187710.50 // actually 187,710.50 + 500,000,000/77,374,278,481
Especificaciones
Su salida debe redondearse al menos a la centésima más cercana (es decir, si la respuesta es 47.2851, puede generar 47.29)
Su salida no tiene que tener los siguientes ceros y un punto decimal si la respuesta es un número entero (es decir, 125.00 también puede salir como 125 y 125.0)
No tiene que admitir ningún número inferior a 1.
No tiene que admitir entradas no enteras. (es decir, 1.52, etc.)
Reglas
Las lagunas estándar están prohibidas.
Este es un código de golf , por lo que la respuesta más corta en bytes gana.
s + (x - s^2) / (2 * s) == (x + s^2) / (2 * s)