Foro de elhacker.net

Programación => Java => Mensaje iniciado por: AlessioAuditore en 2 Octubre 2016, 01:41 am



Título: Algoritmo de la raiz enesima
Publicado por: AlessioAuditore en 2 Octubre 2016, 01:41 am
Una pregunta.
Necesito un algoritmo que calcule la raiz enesima de un un numero, hecho en Java. La restriccion es no utilizar la clase Math y su metodo pow.
Asi que he estado pensando en muchas maneras de resolverlo. algunas son una locura. manejandolo como una cadena y simular el proceso en el cuaderno de como nos enseñaron a sacar la raíz. muy complicadas y muy robustas, que de por si, solo me aproximan al resultado.

saben de algun algoritmo con solo sumas, restas, divisiones y multiplicaciones que me ayude a resolverlo ?
=)


Título: Re: Algoritmo de la raiz enesima
Publicado por: oldaccount en 11 Octubre 2016, 22:12 pm
Hola AlessioAuditore.

Esta es mi solución al problema:

Código
  1. import java.util.Scanner;
  2.  
  3. public class RaizEnesima {
  4. public static void main(String[] args) {
  5. float x = 0f;
  6. int n = 0;
  7. float result = 0f;
  8. float aux = 0.00001f;
  9. Scanner sc = new Scanner(System.in);
  10.  
  11. x = sc.nextFloat();
  12. n = sc.nextInt();
  13.  
  14. if(n == 0) {
  15. result = 1;
  16. } else {
  17. while(potenciaEnesima(result, n) < x) {
  18. result = result + aux;
  19. }
  20. }
  21.  
  22. System.out.printf("%.4f\n", result);
  23. }
  24.  
  25. public static float potenciaEnesima(float x, int n) {
  26. float tmp = 1;
  27.  
  28. for(int i = 0; i < n; i++) {
  29. tmp = tmp * x;
  30. }
  31.  
  32. return tmp;
  33. }
  34. }

La salida del programa es:

Código:
27
0
1.0000

Código:
27
3
3.0000

Código:
65978
12
2.5213

Código:
7867868238
7
25.9235

Saludos.