elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  JAVA primos, pares e impares
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: JAVA primos, pares e impares  (Leído 5,859 veces)
iamedgarrios

Desconectado Desconectado

Mensajes: 3


Ver Perfil
JAVA primos, pares e impares
« 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.


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: JAVA primos, pares e impares
« Respuesta #1 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...


« Última modificación: 3 Agosto 2017, 18:00 pm por NEBIRE » En línea

biestable

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Re: JAVA primos, pares e impares
« Respuesta #2 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.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con programa numeros pares e impares:P « 1 2 »
.NET (C#, VB.NET, ASP)
<sylar> 18 29,461 Último mensaje 17 Abril 2009, 03:41 am
por <sylar>
Pares e impares
Programación C/C++
Anastacio 5 5,325 Último mensaje 7 Marzo 2012, 19:36 pm
por Eternal Idol
Programa en C (Pares e Impares)
Programación C/C++
sora_ori 1 9,808 Último mensaje 15 Abril 2013, 15:40 pm
por leosansan
Números primos/ pares e impares.
Programación C/C++
iamedgarrios 2 3,562 Último mensaje 2 Agosto 2017, 20:11 pm
por iamedgarrios
Mostrar pares e impares en dos arreglos
Programación C/C++
gonezq 1 4,377 Último mensaje 27 Febrero 2021, 03:45 am
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines