Listar nÚmeros primos e um array e listar nÚmeros que se repetem dentro de duas arrays

1 resposta
R

Olá pessoal!

Possuo essas duas dúvidas:

Meu programa permite ao usuário números (int) que são salvos em uma Array.

A primeira pergunta: Como faço para pegar estes valores e gerar uma nova array apenas com os números primos?

public ArrayList<Integer> primosConjuntoA(){
        ArrayList<Integer> listaPrimos = new ArrayList<>();
        int contador = 0;
        for(Integer a : conjA){
            // aqui deveria existir um if(x%todos valores até x==0){
                                                  cont++

            if(contador<2){
             listaPrimos.add(a);
            }            
        }
        return listaPrimos;
    }

A segunda dúvida:
Existem dois Arrays, e há a possibilidade dos valores entre ambas serem repetidos, exemplo:

Array1: 4, 6, 8, 10
Array2: 3, 10, 4, 1
RESULTADO REPETIDOS: 4, 10
(os valores da Array vem livremente do usuário)

Como gerar uma nova Array, apenas com os valores que se repetem?
(imagimem um sistema de conjuntos)
[img]http://s3.static.brasilescola.com/img/2014/01/Intersec%C3%A7%C3%A3o-de-Conjuntos(2).jpg[/img]

1 Resposta

B

Primeira duvida

seria melhor usar ArrayList mas se só serve Array ai vai uma possível solução.

Integer arrayIndex = new Integer[100] // array que vai guardar os índex dos primos no array conjA ou pode ser um List e bem melhor
for(int i=0; i < conjA.length; i++){  
     
     Integer a = conjA[i];
      if((a / 2 > 0) || (a / 3 > 0) || (a / 5 > 0) || (a / 7 > 0)){
         //numero e primo
         cont++;
         arrayIndex[i]; //armazena index
     }

     .
     .
     .            
}

//gerar no array
Integer[] newArray = new Integer[cont];

//apartir daqui vc pode fazer de duas formas percorrer o conjA e verificar novament se e primo

//percorrer lista novamente para preencher o array ai não precisa do array "arrayIndex"
int i=0;
for(Integer a : conjA){  
     
      if((a / 2 > 0) || (a / 3 > 0) || (a / 5 > 0) || (a / 7 > 0)){
        newArray[i] = a;
        ++i;
     }       
}

//ou pegar os indexs do arrayIndex que aponta para a localização dos primos no array conjA e atribuir a newArray na posição "i";
for(int i=0; i < newArray.lenght; i++){  
     
     int index = arrayIndex[i];
     newArray[i] = conjA[index]
}

a segunda duvida é mais complicado vc teria que criar uma nova classe ArrayNumeroRepetido que dois array, sobrescrevesse os metodos hasCode e equals e retornaria um novo array.

Criado 5 de novembro de 2015
Ultima resposta 9 de nov. de 2015
Respostas 1
Participantes 2