Vetor com números primos...!

10 respostas
M

Oi gente, tudo bem?
Sou nova por aqui, mas já chego com um problema!
Tenho que criar uma classe que receba vários números em um vetor e no final devo apresentar os números primos que antecedem cada um dos números digitados…!
Até onde cheguei:

import javax.swing.*;

class Primos

{

public static void main (String args[])

{

int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero de elementos que o vetor possuira:");
int vetor[] = new int[num];

for (int i=0; i<=num; i++)

{

int vetor = Integer.parseInt   Deu branco!

Alguém consegue me ajudar please? Fico aguardando…

Brigada…

10 Respostas

B

Procure por números primos aqui no fórum, só essa semana já devem ter postado uns 2 deles.

alanmateus

Boa tarde …
nao sei o que vc quer realmente mas vou tentar ajudar!

for (int i=0; i<=num.SIZE; i++){
   int vetor = Integer.parseInt(t(JOptionPane.showInputDialog(null, "Digite um Numero "));
   num[i]=vetor;
   }

espero que isso ajude voce em alguma coisa!

abraaaaaço

rafaeldiego

oi :lol: …

vamo ver se entendi:

vc entra com numeros no vetor (ex: 2, 3, 9, 7, 4, 9, 1, 10). até aí ok (dahhh)…

exibe todos os numeros primos QUE ESTAO NO VETOR, de uma só vez?
(ex: 2, 3, 7, 1)

ou os nºs primos que antecedem os que estao no vetor?
(ex:
num [2] = 1, 2.
num [3] = 1, 2, 3.
num [9] = 1, 2, 3, 5, 7.
num [7] = 1, 2, 3, 5, 7.
)

ajuda ae…

M

Rafael,

você entendeu na segunda! hehe…

Preciso mostrar todos os números primos que ANTECEDEM CADA NÚMERO DIGITADO PARA O VETOR. Exatamente como no seu segundo exemplo… tens como ajudar? É que fica mais difícil pq eu não tenho o eclipse no meu pc, só no note do meu namorado… pq meu pc é meio lento…

Tks,

Mariana.

B

Não precisa do Eclipse (ou de qualquer IDE) para fazer um programa, com o JDK instalado, basta um bloco de notas qualquer p/ fazer tudo. É até melhor para pensarmos duas vezes no que rodamos.

Quanto ao problema, gere os números primos de acordo com o números passados e os guarde em um ArrayList. Depois é só aproveitar p/ imprimir cada um, nem precisa refazer o calculo toda hora.

Três dicas:

:arrow: Um número x é divisível por um outro y quando x % y == 0, ou seja, o resto da divisão de x por y é zero.

:arrow: Se um número não é divisível por todos os números até a sua raiz quadrada, ele então ele é primo. Ou seja, não precisa testar tudo, teste somente até a raiz quadrada do número.

:arrow: Pesquise sobre testes de primalidade.

rafaeldiego

Aiai… hoje acordei de bom humor e resolvi dar uma ajudinha extra…
pode conter alguns exageros ae, mas ta funcionando e ja da pra tirar sua ideia:

a classe a algumas importações nao foram feitas… mas… tem q ficar algum desafio, se nao fica facil!
rs

espero ter ajudado!

public static Vector<Integer> vetNum;
	public static Vector<Integer> vetPrimos;
	
	public NumPrimos() {
		this.vetNum = new Vector<Integer>();
		this.vetPrimos = new Vector<Integer>();
	}
	//INSERE
	public static void insereNumero(int tam){
		int num;
		for(int i=0; i< tam; i++){
			num = Integer.parseInt(JOptionPane.showInputDialog(null,"Valor posicao["+i+"]:"));
			vetNum.add(num);
		}
	}
	//ORDENA
	public static void ordenaVector(){
		Collections.sort(vetNum);
	}
	//A CADA NUMERO DO VETOR,CHAMA FUNCAO Q EXIBE OS PRIMOS MENORES
	public static void verificaPrimos(){
		for (int i=0; i< vetNum.size(); i++){
			System.out.println("Numero ["+vetNum.elementAt(i)+"]");
			MostraPrimos(vetNum.elementAt(i));
		}
	
	}
	//MOSTRA OS PRIMOS MENORES QUE CADA VALOR
	private static void MostraPrimos(int elementoNum) {
		for(int j=0; j< vetPrimos.size(); j++){
			if( vetPrimos.elementAt(j)<=elementoNum){
				System.out.println("Primo = "+vetPrimos.elementAt(j));
			}
		}
	}
	//GERA UM VETOR DE PRIMOS ATE O MAIOR VALOR DIGITADO
    public static void gerarPrimos (){
        int count = 0;
        for (int i=1;i<=vetNum.lastElement();i++){
        	//para cada potencial numero primo menor que this.numero
        	boolean ehPrimo = true;
        	for (int j=2;j < i;j++){
        		//de 2 a i-1, testa se i e primo
        		if (i % j == 0){
        			ehPrimo = false;
        		}
        	}
        	if (ehPrimo){
        		vetPrimos.add(count,i);
        		count++;
        	}
        }
    }
	
	public static void main(String[] args) {
		int tam;		
		tam = Integer.parseInt(JOptionPane.showInputDialog(null,"Tamanho do vetor:"));
		insereNumero(tam);
		ordenaVector();
		gerarPrimos();
		verificaPrimos();
	}
ViniGodoy

Muito bacana o programa.

Pena que usa Vector, uma collection que já não é recomendada desde o java 1.2.

O ideal mesmo é usar List, como descrito como nesse exemplo:
http://www.guj.com.br/posts/list/74068.java#389435

rafaeldiego

ViniGodoy, Eu programa em Java há pouquíssimo tempo, vi fundamentos na facul e agora me aprofundando em cursos e apostilas (e tutoriais)…
Eu, geralmente, utilizAVA só o Vector… pq o achava muito prático, mas vi o link que você mandou! Mto bom!
Valeu ae!!!
Abraço

M

Pessoal,

muito obrigada!

:slight_smile:

ViniGodoy

rafaeldiego:
ViniGodoy, Eu programa em Java há pouquíssimo tempo, vi fundamentos na facul e agora me aprofundando em cursos e apostilas (e tutoriais)…
Eu, geralmente, utilizAVA só o Vector… pq o achava muito prático, mas vi o link que você mandou! Mto bom!
Valeu ae!!!
Abraço

Sem problemas. Uma pena mesmo é as faculdades ainda estarem ensinando Vector. A sintaxe do List é praticamente idêntica… aliás, é até mais enxuta.

Criado 15 de maio de 2008
Ultima resposta 19 de mai. de 2008
Respostas 10
Participantes 5