Aprende a recuperar la raíz cuadrada de un número sin usar el encabezado Math en C

Cómo obtener la raíz cuadrada de un número sin usar la función sqrt en C

Todo programador de C conoce el archivo de encabezado math.h del lenguaje de programación C. Este encabezado define varias funciones matemáticas y una macro. Todas las funciones disponibles en esta biblioteca toman double como argumento y devuelven un doble como resultado. 

Una de las características conocidas de esta biblioteca es la función sqrt, la función bastante útil double sqrt(double number) que devuelve la raíz cuadrada de number:

#include <stdio.h>
#include <math.h>

int main () {
   /// 2.000000
   printf("Raíz cuadrada de %lf is %lf\n", 4.0, sqrt(4.0) );
   /// 2.236068
   printf("Raíz cuadrada de %lf is %lf\n", 5.0, sqrt(5.0) );
   
   return(0);
}

Bastante fácil, ¿verdad? Sin embargo, a los profesores de las universidades no les gusta dejar las cosas fáciles para los estudiantes, por eso en las clases de programación es posible que necesites encontrar una manera de encontrar la raíz cuadrada de un número sin usar esta biblioteca en C.

What Horseman Whaaat

Como los deberes o las tareas no son opcionales, te mostraremos cómo puedes lograr fácilmente este objetivo sin usar la función sqrt en C.

Implementación

Para comenzar, le expondremos la solución directamente y se la explicaremos al final del artículo:

#include<stdio.h>

void main()
{
    int number;

    float temp, sqrt;

    printf("Proporcione el número: \n");

    scanf("%d", &number);

    // almacenar la mitad del número dado, por ejemplo, de 256 => 128
    sqrt = number / 2;
    temp = 0;

    // Itere hasta que sqrt sea diferente de la temperatura, que se actualiza en el ciclo
    while(sqrt != temp){
        // inicialmente 0, se actualiza con el valor inicial de 128
        // (en la segunda iteración = 65)
        // y así
        temp = sqrt;

        // Luego, reemplace los valores (256 / 128 + 128 ) / 2 = 65
        // (en la segunda iteración 34.46923076923077)
        // y así
        sqrt = ( number/temp + temp) / 2;
    }

    printf("La raíz cuadrada de '%d' is '%f'", number, sqrt);
}

El código funciona así: inicialmente, el programa le pedirá al usuario el número del que queremos encontrar la raíz cuadrada. Almacenaremos la mitad del número en una variable dividiéndola por 2, a saber sqrt. Luego, declararemos una variable temporal que almacenará una copia del valor anterior de a sqrtsaber temp. Finalmente, realizaremos un bucle hasta que la variable sqrt sea diferente de temp, dentro actualizaremos el valor de temp con el valor sqrt anterior y así sucesivamente. El valor sqrt se actualiza mediante la operación descrita en el código y eso es todo. Una vez que finalice el ciclo, podrás imprimir la raíz cuadrada del número.

Que te diviertas ❤️!


Ingeniero de Software Senior en EPAM Anywhere. Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores