Título: JAVA primos, pares e impares Publicado por: iamedgarrios en 3 Agosto 2017, 01:35 am Quiero un programa que muestre pida numeros al usuario hasta que ingrese un "0" o un número negativo, cuando esto ocurra, el programa debe mostrar:
1.-Cuántos numeros se ingresarón 2.Cuántos son primos 3.-Cuantos son pares 4.- Cuantos son impares. He realizado el codigo para los casos 2,3, y 4. ¿Puedo unir el codigo que ya tengo de algúna manera? Honestamente no tengo idea de que necesito o por donde proceder, pues es mi primer curso de Java. ¿Que deberia aprender para poder resolver esto? Tengo condigo para los números primos : Código: package nprimo; import java.util.Scanner; public class Nprimo { public static void main(String[] args) { int temp; boolean isPrime=true; Scanner scan= new Scanner(System.in); System.out.println("Ingrese un numero"); int num = scan.nextInt(); for (int i=2;i<=num/2;i++) { temp=num%i; if (temp==0) { isPrime=false; break; } } if(isPrime) System.out.println(num +"Es un numero primo :) "); else System.out.println(num +"No es un número primo :( "); } } y el codigo para saber si el número es par o impar. Código: import java.util.Scanner; public class Main { public static void main(String[] args) { int n; String m=""; System.out.println("*Determinarn numero es par o impar*"); System.out.println(""); System.out.println("ingreseumero"); Scanner teclado=new Scanner(System.in); n=teclado.nextInt(); if(n%2==0) m="es par"; else m="es impar"; System.out.println("elro "+n+" "+m); } } Gracias. Título: Re: JAVA primos, pares e impares Publicado por: Serapis en 3 Agosto 2017, 07:09 am Código: Funcion TareasDeMates entero n, Cuenta, Pares, Impares, Primos Hacer n = PedirNumero Si (n>0) luego Cuenta +=1 Si ((n and 1) = 0) luego Pares +=1 Si (n == 2) luego // Como par, sólo el número 2 se considera primo, pués no es divisible más que por sí mismo y la unidad, que es lo que define a un primo. Primo +=1 Fin si Si no Impares +=1 Si EsPrimo(n) luego //un primo solo puede ser impar... luego va solo aquí Primos +=1 Fin si Fin si Fin si Repetir Mientras (n sea mayor que 0) Mostrar mensaje: Cuenta, Pares, Impares, Primos Fin Funcion Código: Buleano = EsPrimo(Entero n) Entero Max Max = RaizCuadrada(n) //eliminar decimales... Bucle para k desde 3 hasta Max en incrementos de 2 Si ((n modulo k) = 0) luego // es decir si tras la división el resto es 0 Devolver FALSE // es divisible por otro valor que no es 1 y sí mismo. Fin si Fin Bucle Devolver TRUE Fin Funcion Para optimizarlo, es preferible al inicio crear una tabla de primos (se crea una sola vez). Luego la función EsPrimo se modifica, para mediante una búsqueda binaria (sobre la tabla de primos), se localiza si el número entrado existe en la tabla, si existe es primo, si no se encuentra no lo es. Como eres nuevo, seguramente no seas capaz de hacer una búsqueda binaria, vale... entonces creas un bucle 'While' y lo recorres mientras el número en el bucle sea menor que el recibido, si se encontró devuelve TRUE, si se llega al límite del bucle, se devuelve FALSE. El dilema con una tabla de primos, es cuánto de grande es el mayor primo que se va a buscar, por que si no está contenido en la tabla, sin duda devolverá false, cuando en realidad 'no lo sabemos', en ese caso, si finaliza el bucle se compara si el primo mayor en la tabla es menor que el número entrado y e ese caso devolver un valor INCIERTO (esto es un mensaje de advertencia: el valor recibido es mayor que el máximo primo guardado en la tabla...) Pero una tabla, acelera mucho los cálculos... Título: Re: JAVA primos, pares e impares Publicado por: biestable en 30 Agosto 2017, 15:00 pm Con respecto a tu pregunta entiendo que lo que te falta por hacer es el punto 1, el saber cuantos números ha ingresado el usuario. Es más fácil que lo que ya has hecho.
en pseudocódigo sería más o menos así: int primos,pares,impares; int contador=0 if( recibo un número menor o igual que cero){ devuelve contador primos pares impares; }else{ contador++; // aqui va el resto del código para ver si es primo, par o impar } En cuanto a lo de los números primos, una tabla, conjunto o lista de primos (que puedes sacar de internet) no es mala idea, los problemas que tiene esta solución son los ya comentados por nebire. por último, en el código que tienes para buscar los primos en la parte de: for (int i=2;i<=num/2;i++) el bucle se extiende más de lo necesario, quedaría un poco mejor así: raiz=math.sqrt(num); for (int i=2; i<=raiz ;i++) Deteniendo el bucle cuando lleguemos a la raíz del numero introducido en vez de a la mitad. |