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.464102Entrada: N = 16
Salida: 4
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; }
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.
- 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.
- 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.
- Después de encontrar una parte integral, encontraremos la parte fraccionaria.
- Inicialice la variable de incremento en 0,1 y calcule iterativamente la parte fraccionaria hasta 5 lugares decimales .
- Para cada iteración, cambie el incremento a 1/10 de su valor anterior.
- 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; }
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
Aplicar log2() en ambos lados
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; }
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