¿Programacion en Java ¿Cómo saber si un numero ingresado es parte de una serie?

Elabora un programa que lea un número entero e imprima si ese número pertenece a la serie Fibonacci o no pertenece a ella. Ya tengo la serie, pero no se como hacer que ingresando "n" el programa me diga si es parte de la serie o no. Tengo otro problema donde tambien tengo que ingresar un numero y que el programa determine si es parte de un conjunto dado o no.

3 respuestas

Calificación
  • hace 5 años
    Mejor Respuesta

    Un número n es parte de la serie Fibonacci si y sólo si 5*n*n+4 o 5*n*n-4 es un número cuadrado perfecto. Y para comprobar tal cosa, puedes auxiliarte de los métodos sqrt y floor de la clase Math, considerando que si la raíz cuadrada de un número redondeada al entero de abajo más próximo, restado a la raíz cuadrada del mismo número sin redondear, es igual a 0, entonces es un número cuadrado perfecto.

    ------

    Estimado David: creo que tienes un problema para entender requerimientos, pero especialmente para entender lo que es eficiencia. Todo ocupa recursos, tiempo y memoria en un programa. Estás generando innecesariamente un array sólo para después corroborar si x número se halla en el arreglo, e incluso sugieres en tus comentarios que puede generarse un arreglo de 50,000 casillas y llenarlo con la serie Fibonacci como si no hubiese ningún problema. ¿Sabes cuánto tardaría en generarse la serie Fibonacci hasta el elemento 50,000 y que éste sería un número tan inmenso que ni siquiera podría caber en los límites que refieren a un tipo int? Las computadoras no son mágicas, hay que saber programarlas considerando sus limitaciones.

  • hace 5 años

    Una posible solución es que agregues un condicional if(n == numerofibonacci) luego de la instrucción que mostraba los números de tal serie. Lo que quieras colocar dentro del condicional dependerá de tu razonamiento.

  • David
    Lv 5
    hace 5 años

    Te dejo una imagen del codigo ya que pegarlo acá se ve horrible:

    http://gyazo.com/03e5395561861889230abd9486e2d86a

    Suerte :) y puedes aplicar lo mismo para el segundo.

¿Aún tienes preguntas? Pregunta ahora para obtener respuestas.