No hay un método incorporado para calcular la raíz cuadrada de un BigInteger, ya sea estático o de instancia.
Puede implementar su propio método para aproximarlo o calcularlo exactamente, teniendo en cuenta que el resultado se expresa más adecuadamente como BigDecimal. Consulte Wikipedia para obtener ideas: Métodos para calcular raíces cuadradas. El método babilónico es probablemente la forma más rápida de verificar que un número sea un cuadrado perfecto, pero al usar las matemáticas enteras, siempre obtendrá una convergencia con un número entero que parecerá estable, lo que podría generar falsos positivos.
Otra posibilidad es el cálculo exacto utilizando una identidad básica; si S = s ^ 2 y a + b = s, entonces S = (a + b) ^ 2 = a ^ 2 + 2ab + b ^ 2. Por lo tanto, es posible “buscar objetivos” de manera inteligente comenzando con un valor arbitrario que se sabe que es menor que la raíz cuadrada, cuadrándolo y luego añadiéndole racionales cada vez más pequeños hasta llegar a una respuesta exacta (o suficientes signos para trabajar con).
- ¿Hay algún algoritmo del orden O (sqrt (n))?
- Si tengo un número (ej .: n = 28), ¿existe una fórmula cerrada para saber cuántos son los pares ordenados de números enteros (a, b) de manera que [matemáticas] a \ cdot b = n [/ matemáticas]?
- ¿Existe un algoritmo para fusionar dos árboles rojo-negros con una complejidad menor que O (n + m)?
- ¿Puede una computadora de agujero negro resolver todos los problemas de NP-Complete en tiempo polinómico?
- ¿Por qué me sigue mostrando el valor 0.0 en mi código Python?