› Foros › PC › Software libre
PruebaNumero.java:46: warning: unmappable character for encoding UTF8
System.out.println("Introduce un n�mero para calcular su factorial");
public boolean esPrimo(long numero){
boolean resultado=true;
if(numero%2==0 && numero!=2){
System.out.println(numero+" no es primo");
resultado=false;
return resultado;
}
else{
int i=3;
while(numero%i !=0 && i<numero/2){
resultado=true;
i++;
}
if(resultado==true) System.out.println(numero+" es primo");
else System.out.println(numero+" no es primo");
return resultado;
}
}
Inventado escribió:Sobre el código, creo que el problema es el while:
while(numero%i !=0 && i<numero/2){
Aqui no sirve un while: mientras entre en el while, te va a devolver que el numero es primo. Con el 15 no veo que ocurre, pero los otros te da que el numero (ej. 25) al dividirlo entre i te va a dar un resto distinto de 0 (25%3!=0) y que el 25/2>3, por lo que entra en el while.
Con el 15 a saber que ocurre, pero: "Un número impar N es primo si no es divisible por los números impares comprendidos entre 3 y N/2.", en lugar de i++, seria i = i+2, ya que si no estarías comprobando los pares también.
Por ello cambiaría ese while por un for, osea, para cada i entre 3 y el numero/2, con la condición de aumento +2. Luego materia un if para comprobar si el numero%i da resto cero, que es lo que piden. Y ahi ya sale solo.
public boolean esPrimo(long numero){
boolean resultado=true;
if(numero%2==0 && numero!=2){
System.out.println(numero+" no es primo");
resultado=false;
return resultado;
}
else{
for(int i=3; i<numero/2; i=i+2){
if(numero%i !=0) resultado=true;
else resultado=false;
}
if(resultado==true) System.out.println(numero+" es primo");
else System.out.println(numero+" no es primo");
return resultado;
}
}
Introduce un n�mero para saber si es primo o no
25
25 es primo
public static boolean esPrimo(long numero){
boolean resultado=true;
if(numero%2==0 && numero!=2)
resultado=false;
else{
for(int i=3; i<numero/2; i=i+2){
if(numero%i == 0)
resultado=false;
}
}
if(resultado)
System.out.println("El "+numero+" es primo");
else
System.out.println("El "+numero+" no es primo");
return resultado;
}
if((numero%2==0 && numero!=2) || numero==1)
Ealdor escribió:public static boolean esPrimo(long numero){
boolean resultado=true;
if(numero%2==0 && numero!=2)
resultado=false;
else{
for(int i=3; i<numero/2; i=i+2){
if(numero%i == 0)
resultado=false;
}
}
if(resultado)
System.out.println("El "+numero+" es primo");
else
System.out.println("El "+numero+" no es primo");
return resultado;
}
Tambien habría que indicar que si el número es 1, no es primo.if((numero%2==0 && numero!=2) || numero==1)
Donato escribió:aun con todo eso, sigue diciendo que 25 es primo xD
public static void main(String[] args){
long i = 25;
System.out.println(esPrimo(i));
}
El 25 no es primo
false
double primo=Math.pow(2,numero-1);
if ((primo-1)%numero==0){
System.out.println("Es primo");
}
else{
System.out.println("No es primo");
}
public static void main(String[] args){
//El método no es estático
Numero n1=new Numero(0);
long i = 25;
System.out.println(n1.esPrimo(i));
}
carlos@carlos-pc-linux:~/documentos/facultad/1º/Programacion/Practicas Prog I/P5$ java Numero
25 es primo
true
for(int i=3; i<numero/2; i=i+2){
if(numero%i ==0) resultado=false;