Foro sobre Java SE > Crear un arreglo en java y decir si son primos o no
Hola, este trozo esta perfecto:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int n, pos, j, i;
int arreglo[];
pos = 0;
n = entrada.nextInt();
arreglo = new int[n];
for (i = 0; i
Hasta el fin del primer bucle, todo bien. Ahora, el segundo bucle no hay por donde cogerlo.
Empiezo a decirte cositas:
- El bucle que iba incrementando la variable i, termino arriba, por tanto, no tiene sentido que uses esa variable en el segundo bucle como si iteraras con ella, ya que siempre va a tener el mismo valor(tamañoDelArray-1)
-Todos los numeros son divisibles entre 1, por tanto el "supuesto segundo bucle" que itera con la j, deberia empezar en 2.
- Este if, "if (pos != 2) {" no le veo ningun sentido....
Resumiendo, todo el segundo bucle para abajo esta todo mal, te recomiendo, lo elimines y empieces desde 0, pues sera mas sencillo que arreglar lo que tienes actualmente.
El proceso que tienes que hacer:
//bucle que recorre los elementos del array desde el 0 al length-1
for (int k = 0; k (SIGNOMENOR) arreglo.length; k++) {
//variable que usamos como divisor para saber si el elemento del array es divisible por el
int divTemp = 2;
//variable que controlara si un elemento es primo o no
boolean noPrimo = false;
//mientras el divisor es menor a el elemento -1 y noprimo sea falso
while (divTemp <= arreglo[k] - 1 && !noPrimo ) {
//si el elemento es divisible entre el divisor temporal con el que probamos, se cambia el //valor de noprimo, ya que indica que hemos encontrado un divisor y no tiene sentido //seguir //en el bucle while, por lo que saldremos del bucle while y continuamos con el el //bucle for, //primero comprobando si el numero fue primo o no y despues continua con el //siguiente //elemento del array, volvera a entrar en el while, y etc etc
if (arreglo[k] % divTemp == 0) {
noPrimo = true;
}
//incrementamos divTemp para probar el siguiente divisor.
divTemp++;
}
if (!noPrimo ) {
System.out.println("El numero " + arreglo[k] + " es Primo");
} else {
System.out.println("El numero " + arreglo[k] + " no es Primo");
}
}
En fin, eso es lo que tienes que agregar, echale un ojo y cualquier duda, por aqui andamos. Un saludo
NOTA: Donde pone (SIGNOMENOR), sustituyelo por "<" que no se, interfiere con los tag del foro y falla.
Hola, aquí tienes una solución. Cualquier duda no dudes en preguntar.
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);
int n, i;
int arreglo[];
System.out.println("Introduzca tamaño de la lista");
n = entrada.nextInt();
arreglo = new int[n];
System.out.println("Introduzca cada elemento de la lista");
for (i = 0; i < arreglo.length; i++)
{
arreglo[i] = entrada.nextInt();
}
int contadorDeDivisores = 0;
for (int item : arreglo)
{
contadorDeDivisores = 0;
for (int k = 1; k < (item + 1); k++)
{
if (item % k == 0)
{
contadorDeDivisores++;
}
}
if (contadorDeDivisores != 2)
{
System.out.println("El número " + item + " No es primo");
}
else
{
System.out.println("El número " + item + " Es primo");
}
}
entrada.close();
}
}
Buenas noches,
Necesito crear un programa en java que me lea un arreglo de n elementos, y me diga para cada elemento del arreglo si el numero es primo o no, hasta ahora llevo esto pero no me funciona; gracias
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int n, pos, j, i;
int arreglo[];
pos = 0;
n = entrada.nextInt();
arreglo = new int[n];
for (i = 0; i < arreglo.length; i++) {
arreglo[i] = entrada.nextInt();
}
for (j = 1; j <= arreglo.length; j++) {
if (arreglo[i] % j == 0) {
pos++;
arreglo[i]++;
}
if (pos != 2) {
System.out.println("No es Primo");
} else {
System.out.println("Si es Primo");
}
}
}
}