Programa en C para encontrar la raíz cuadrada de un número dado

Dado un número N , la tarea es escribir un programa en C para encontrar la raíz cuadrada del número N dado .

Ejemplos: 

Entrada: N = 12 
Salida: 3.464102

Entrada: N = 16 
Salida:

Método 1: Usar la función sqrt() incorporada: La función sqrt() devuelve la raíz cuadrada de cualquier número N.

A continuación se muestra la implementación del enfoque anterior:

C

// C program for the above approach
#include <math.h>
#include <stdio.h>
 
// Function to find the square-root of N
double findSQRT(double N) { return sqrt(N); }
 
// Driver Code
int main()
{
 
    // Given number
    int N = 12;
 
    // Function call
    printf("%f ", findSQRT(N));
    return 0;
}
Producción: 

3.464102

 

Método 2: uso de la búsqueda binaria : este enfoque se utiliza para encontrar la raíz cuadrada del número N dado con una precisión de hasta 5 decimales. 

  1. La raíz cuadrada del número N se encuentra en el rango 0 ≤ raíz cuadrada ≤ N. Inicializa inicio = 0 y fin = número.
  2. Compara el cuadrado del entero medio con el número dado. Si es igual al número, entonces encontramos nuestra parte integral; de lo contrario, busque lo mismo en el lado izquierdo o derecho de la mitad, según la condición.
  3. Después de encontrar una parte integral, encontraremos la parte fraccionaria.
  4. Inicialice la variable de incremento en 0,1 y calcule iterativamente la parte fraccionaria hasta 5 lugares decimales .
  5. Para cada iteración, cambie el incremento a 1/10 de su valor anterior.
  6. Finalmente, devuelva la respuesta calculada.

A continuación se muestra la implementación del enfoque anterior:

C

// C program for the above approach
#include <stdio.h>
#include <stdlib.h>
 
// Function to find the square-root of N
float findSQRT(int number)
{
    int start = 0, end = number;
    int mid;
 
    // To store the answer
    float ans;
 
    // To find integral part of square
    // root of number
    while (start <= end) {
 
        // Find mid
        mid = (start + end) / 2;
 
        // If number is perfect square
        // then break
        if (mid * mid == number) {
            ans = mid;
            break;
        }
 
        // Increment start if integral
        // part lies on right side
        // of the mid
        if (mid * mid < number) {
          //first start value should be added to answer
            ans=start;
          //then start should be changed
            start = mid + 1;
        }
 
        // Decrement end if integral part
        // lies on the left side of the mid
        else {
            end = mid - 1;
        }
    }
 
    // To find the fractional part
    // of square root upto 5 decimal
    float increment = 0.1;
    for (int i = 0; i < 5; i++) {
        while (ans * ans <= number) {
            ans += increment;
        }
 
        // Loop terminates,
        // when ans * ans > number
        ans = ans - increment;
        increment = increment / 10;
    }
    return ans;
}
 
// Driver Code
int main()
{
 
    // Given number
    int N = 12;
 
    // Function call
    printf("%f ", findSQRT(N));
    return 0;
}
Producción: 

3.464099

 

Método 3: Usando log2() : La raíz cuadrada de un número N se puede calcular usando log2() como: 
 

Sea d nuestra respuesta para el número de entrada N, entonces  

d = N^{\frac{1}{2}}

Aplicar log2() en ambos lados 

log2(d) = log2(N^{\frac{1}{2}})

log2(d) = {\frac{1}{2}}*log2(N)

d = 2^{{\frac{1}{2}}*log2(N)}

Por lo tanto, 

d = pow(2, 0.5*log2(n)) 

A continuación se muestra la implementación del enfoque anterior:

C

// C program for the above approach
#include <math.h>
#include <stdio.h>
 
// Function to find the square-root of N
double findSQRT(double N) { return pow(2, 0.5 * log2(N)); }
 
// Driver Code
int main()
{
 
    // Given number
    int N = 12;
 
    // Function call
    printf("%f ", findSQRT(N));
    return 0;
}
Producción: 

3.464102

 

Publicación traducida automáticamente

Artículo escrito por akhilsharma870 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *