(i=2;i<x;i++)?
Разве может быть делителем x число которое >1/2x (например числа >5 не могут быть делителями 10)
можно сократитть количество проверок в цикле почти в 2 раза.
Тогда уж не до x/2 а до sqrt(x), обычно делается так, не стал писать, чтоб не усложнять.
yk[99] - получается статический
*(yk) - тоже не верно а как тогда?
Объявлять и выделять память так:
Код
int* yk = new int[n]
Обращаться же по индексу
Код
cin>>yk[i];
s=yk[i];
s=yk[i];
Пробуйте сортировать. Для сортировки сделайте функцию, которая в качестве параметра принимает указатель на начало массива. Можно конечно qsort, но так неинтересно.