ой... не нравится мне этот код. Опишу в таком порядке, как бросилось в глаза.

1. Для освобождения памяти из под массива использовать надо
Код
delete []yk;

Вы же удаляете бедную память как объект.
2. Память под массив выделяете и так её и не используете.
Код
cin>>* (yk);

- это конечно здорово, что умеете пользоваться разыменовыванием, но тут всё делается проще.
Код
cin >> yk[i];

Так куда проще, а главное, так правильно)) Можно, конечно, инкрементировать указатель, но так он "испортится" - не будет уже указывать на начало массива.
3. Посмотрел, как определяется простота числа. Это плохо, так никто не пишет. 4 лаба, пора бы уже разобраться с функциями.
Вообще, суть функции понятен или нет? Функция обязана что-то возвращать. Пусть возвращает bool (ну, или int) - 0, если число составное, 1 - если простое.
4. Кстати о функциях: int main ничего не возвращает, это ошибка синтаксическая.

Это всё "стопроцентные" ошибки, я уже молчу про то, что код трудночитаем, плохо структурирован. К хорошему стилю лучше привыкать сразу.

Советую написать-таки функцию типа bool, ну или в вашем случае int...
int IsSimple(int x), которая отвечала бы за определение простоты числа. Сложное - возвращаем 0. Дошла до конца проверки - значит, число простое, возвращаем 1. Это обязательно хотя бы потому, что определение простоты здесь не самоцель а лишь служебная функция, которая используется как один из кусочков выполнения итоговой задачи.

Когда напишете, будем разбираться с сортировкой и копированием.

Массив нужно не просто завести, но и скопировать в него все входные числа. Как это сделать, я описал чуть выше.