Introducción
Un cuadrado perfecto es aquel número entero que al sacarle raíz cuadrada sigue siendo un número entero. Por ejemplo, 25 lo es; ya que su raíz cuadrada es 5, y 5 es un entero.
No pasa lo mismo para 24, ya que su raíz es algo como 4.89.
Vamos a escribir una función en Javascript para calcular o estimar el siguiente cuadrado perfecto de otro cuadrado perfecto.
Más información aquí: https://es.wikipedia.org/wiki/Cuadrado_perfecto
Ejercicio
Veremos cómo buscar el siguiente cuadrado perfecto de un número. Si, por ejemplo, introducimos 25, la función tiene que devolver 36. Y así sucesivamente.
Dicha función también debe ser lo suficientemente inteligente para saber si el número que le asignamos no es un cuadrado perfecto, y en este caso debe devolver -1. Por ejemplo, si le pasamos un 24 devuelve -1. Si le pasamos 25 devuelve 36.
Solución
Aquí el código fuente, abajo lo explico.
function obtenerSiguienteCuadradoPerfecto(cuadradoPerfecto){
// Obtener su raíz
var raiz = Math.sqrt(cuadradoPerfecto);
// Comparar si su raíz es un número entero
if (raiz === parseInt(raiz)) {
/*
En caso de que sí, entonces calculamos el siguiente cuadrado perfecto.
Para sacarlo, sumamos el cuadrado perfecto + la raíz del siguiente multiplicada por 2. Y a eso le restamos uno.
*/
var siguientecuadradoPerfecto = cuadradoPerfecto + ( (raiz + 1) * 2 ) - 1;
return siguientecuadradoPerfecto;
}else{
// Si no, entonces no era un cuadrado perfecto
return -1;
}
}
Primeramente comprobamos si la raíz es un número entero. En caso de que sí, hacemos el cálculo del siguiente cuadrado perfecto. Para ello, sumamos el cuadrado perfecto mas dos veces el lado del siguiente, y finalmente restamos 1.
Ejemplo
Por ejemplo, veamos qué pasa con el número 25. Su raíz cuadrada es 5, así que pasa la prueba. Para calcular el siguiente, sumamos 25 + (6 * 2) y restamos 1.
¿De dónde sale el 6? es el siguiente número después del 5. Es decir, a la raíz (que es 5) le sumamos 1, y obtenemos 6. El 6 lo multiplicamos por 2. Y a todo eso le restamos 1.
Así que se descompone así:
- Primero: 25 + ((5 + 1) * 2) -1
- Luego: 25 + (6 * 2) – 1
- Reducimos a: 25 + 12 – 1
- Queda en esta simple operación: 25 + 11
- Que da este resultado: 36
¡Listo! con esto terminamos por hoy. Aquí dejo algunas pruebas…