¿Cuál es la falla en este código de java (interesante)?
Bueno, estoy trabajando en un programa en netbeans el cual tiene como objetivo hallar el n-ésimo número primo, para lo cual escribí el siguiente código en java, el cual no al compilarse no presenta ningún error (listo para copiar y pegar en netbeans):
public class Primo {
private int n,i,j,c=0,t;
//Constructor
public Primo(int n){
this.n=n;
}
public int esPrimo(int x){
for(i=1;i<=x;i++){
if (x%i==0){
c++;
}
}
if (c<=2)
{ return 1;}
else {return 0;}
}
public void imprimePrimo(){
for(j=2; ;j++){
//bucle infinito
t=0;
if (esPrimo(j)==1)
{t++;}
if (n==t) break;
}//fin del for
System.out.println("El número primo de orden "+n+" es "+j);
}//fin de método
}//fin de clase
Como se ve, no tiene el método main, el cual está declarado en una clase aparte:
public class PrimoApli {
public static void main(String [ ] args){
Primo n= new Primo (5);//declaración del objeto
n.imprimePrimo();
}
}
El problema es que solamente funciona cuando n=1, y cuando tiene un valor mayor a este, no muestra resultado (como que se cuelga), he ahí el detalle, lo cual evidencia un error, quizás mal uso de los condicionales if o quizá en el mismo método de verificación de primos, en fin
si se pudiera proporcionárseme ayuda en esto, estaré muy agradecido
gracias de antemano, Roberto
public class Primo {
private int n,i,j,c=0,t;
//Constructor
public Primo(int n){
this.n=n;
}
public int esPrimo(int x){
for(i=1;i<=x;i++){
if (x%i==0){
c++;
}
}
if (c<=2)
{ return 1;}
else {return 0;}
}
public void imprimePrimo(){
for(j=2; ;j++){
//bucle infinito
t=0;
if (esPrimo(j)==1)
{t++;}
if (n==t) break;
}//fin del for
System.out.println("El número primo de orden "+n+" es "+j);
}//fin de método
}//fin de clase
Como se ve, no tiene el método main, el cual está declarado en una clase aparte:
public class PrimoApli {
public static void main(String [ ] args){
Primo n= new Primo (5);//declaración del objeto
n.imprimePrimo();
}
}
El problema es que solamente funciona cuando n=1, y cuando tiene un valor mayor a este, no muestra resultado (como que se cuelga), he ahí el detalle, lo cual evidencia un error, quizás mal uso de los condicionales if o quizá en el mismo método de verificación de primos, en fin
si se pudiera proporcionárseme ayuda en esto, estaré muy agradecido
gracias de antemano, Roberto
1 Respuesta
Respuesta de krlosnow
1