Vector (метод эратосфена)

Пользователь в вектор вводит свои значения чисел (от 0 до 99) после чего нужно методом эратосфена оставить только простые числа этого вектора. Никак не получается это сделать, помогите, пожалуйста

void resh(vector<int>& arr, int dr) 
{
    int n = 0;
    int p = 2;


    int* a = new int[98];
    for (int i = 0; i < 98; i++)
        a[i] = i;
    for (p; p < 98; p++)
    {
        if (a[p] != 0)
        {

            for (int j = p * p; j < 98; j += p)
                a[j] = 0;
        }
    }
    p = 0;
    while (n <= dr)
    {
        if (arr[n] == a[p])
        {
            cout << arr[n] << " ";
            n++;
            p = 0;
        }
        else {
            if (p < 97) p++;
            else {
                p = 0;
                n++;
            }
        }
    }

}/*dr - кол-во элементов в векторе, arr - сам вектор

Ответы (0 шт):