Calcular número primo em array

3 respostas
L

Olá pessoal, to fazendo um trabalho, e to quebrando cabeça.
Preciso dizer quanto numeros primos foram informados no programa, porém quando utilizo o array não funciona.

Gostaria se conseguem me ajudar implementando este código, se é possivel fazer a partir desta minha idéia talvez mudando uma variavel ou outro. Ou se com array so é possivel através do metódo boolean com true e false. Se puderem me dar algumas dicas agradeço muito.
Eis o meu código:

import javax.swing.JOptionPane;

public class Array {

	public static void main(String[] args) {
		
		{int balaio[], i, NMaior, NMenor, somaPar=0, somaImp=0, Bsoma=0, Maior=0, Menor=0, ePrimo, qtdPrimo=0, aux ;
		balaio = new int [5];
		for (i=0; i < 5; i++)
			{balaio[i] = Integer.parseInt(JOptionPane.showInputDialog("Número"));
			Bsoma += balaio[i];
			}
		NMenor=999999;
		NMaior=0;
		
		for (i=0; i < 5; i++)
			{if (balaio[i] > (Bsoma/5))
				{Maior++;
				}
			if (balaio[i] < (Bsoma/5))
				{Menor++;
				}
			if(balaio[i]>NMaior)  
				{NMaior = balaio[i];
				}
			if(balaio[i]<NMenor)  
				{NMenor = balaio[i];  
				}
			if((i % 2)==0)
				{somaPar = somaPar + balaio[i];
				}
			if((i % 2)!= 0)
				{somaImp = somaImp + balaio[i];
				}
			
			ePrimo = 1;
			aux = balaio[i] - 1;
			while (aux > 1)
				{if ((balaio[i] % aux)==0)
					{aux = 1;
					ePrimo = 0;
					}
				aux--;
				}
			qtdPrimo = qtdPrimo + ePrimo;
			
			
			}
					
		System.out.println("A média é " + (Bsoma/5));
		System.out.println("Maiores que a média = " + Maior);
		System.out.println("Menores que a média = " + Menor);
		System.out.println("Numero de primos = " + qtdPrimo);
		System.out.println("O número maior é = " + NMaior);
		System.out.println("O número menor é = " + NMenor);
		System.out.println("A soma par é = " + somaPar);
		System.out.println("A soma impar é = " + somaImp);
		}
	}
}

3 Respostas

E

Crie um método separado para determinar se um número é primo ou não, e teste-o separadamente. Do jeito que está está tudo misturado e difícil de entender. (Principalmente você está com problemas de entender)

L

Não que estou com problema para entender.

Pense da seguinte forma, se em vez de eu utilizar o array, eu apenas informasse um número e quisesse saber se ele é primo ou não, seria da seguinte forma:

{
{
num = Integer.parseInt(JOptionPane.showInputDialog("Digite um numero"));
		ehprimo = 1;
		aux = num - 1;
		while (aux > 1)
			{if ((num % aux)== 0)
				{aux = 1;
				ehprimo = 0;
				}
			aux--;
			}
		qtdPrimo = qtdPrimo + ehprimo;
		}
System.out.println("Primos " + qtdPrimo);
}

Dessa maneira ele vai calcular se o número é primo ou nao, nao concorda?

O que ocorre, é que preciso utilizar o array, informando 5 números quando inicia o programa. E depois tem que pegar cada número e verificar se é primo ou não, se for primo some em qtdPrimo + 1.

Eu utilizei a mesma lógica no 1º código com o array[i].

Gostaria de saber como posso fazer para ele funcionar ali dentro, será que tem jeito?

douglaskd

é algo mais ou menos assim

public boolean isPrime(int num){
        boolean primo = true;
        for(int i=2;i<num;i++){
               if((num % i )== 0){
                 primo = false;
               }
        }
        return primo;
}
use esse método, se o numero passado for primo ele retorna true
numeros[1,2,3,4,5] // array ja populada

int qtdNumerosPrimos = 0;

for(int i=0; i<=numeros.lenght;i++){
     if(isPrime(numeros[i])
     qtdNumerosPrimos++
     }

System.out.println(qtdNumerosPrimos);

obs: não foi testado

Criado 7 de dezembro de 2010
Ultima resposta 7 de dez. de 2010
Respostas 3
Participantes 3