По-моему, тут двух функций вполне хватит: prime, проверяющую число на простоту, и главную функцию main (плюс ещё стандартные функции time, srand и rand). Алгоритм простой: задаём с экрана длину массива, создаём три динамических массива a (для псевдослучайных чисел), b (для значений простых чисел) и с (для индексов простых чисел), заполняем в цикле массив а, в том же цикле проверяем на простоту очередной сгенерированный элемент массива а, если он - простое число, добавляем его значение в массив b, индекс массива а в массив с и увеличиваем счётчик простых чисел m на единицу. По выходу из цикла делаем ветвление: если m=0, то ничего не делаем, если m=1, выводим единственный элемент массива b, если m=2, меняем два первых элемента массива b местами, а если m>2, тогда выводим m элементов массива с на экран через какой-нибудь разделитель (у меня это точка с запятой). Массивы a, b, c пока больше не нужны, поэтому и стираем их оператором delete.

if (m > (n >> 1)) return 1;
return n % m? isprime(n, ++m) : 0;
}
Директиву stdbool.h можете убрать