Si es por el manejo de array vas bien, unicamente como te comentan calculas mal si un numero es primo o no, aun asi te dejo el arreglo del codigo.
He separado el calculo de numero primo en un metodo aparte para que veas como es, y cambiado la condicion del if.
He separado el calculo de numero primo en un metodo aparte para que veas como es, y cambiado la condicion del if.
Código (java) [Seleccionar]
import java.util.Scanner;
import java.util.Random;
public class NumerosPrimos {
public static void main(String[] args) {
Random rnd = new Random();
Scanner input = new Scanner(System.in);
int num;
System.out.println("Introduce longitud del array");
num = input.nextInt();
int[] numPrimo = new int[num]; //En este punto,la longitud del array es dado por la variable num.
for (int i = 0; i < numPrimo.length; i++) {
numPrimo[i] = rnd.nextInt(11); //Genera numeros aleatorios entre 1 y 10
if (!calcularSiEsPrimo(numPrimo[i])) { //calcula si el numero es primo o no
System.out.println("La posicion [" + i + "] con el numero " + numPrimo[i] + " NO es un primo");
}else {
System.out.println("La posicion [" + i + "] con el numero " + numPrimo[i] + " es primo");
}
}
}
static boolean calcularSiEsPrimo(int n) {
if(n==2) return true; //si es dos, directamente retorna true, ya que 2 es numero primo
if (n%2==0) return false; //se comprueba si es multiplo de dos
for(int i=3;i*i<=n;i+=2) { // de no serlo, se comprueba si es divisible entre un numero impar
if(n%i==0) { return false; }// si no es primo, devuelve false
}
return true; // y si lo es, devuelve true
}
}