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

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?

[code] public ArrayList primosConjuntoA(){
ArrayList 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;
}   

[/code]

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)

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.