Нахождение простых чисел: ошибка сегментации

#c

Вопрос:

У меня есть программа, которая находит и печатает простые числа из предопределенной области:

 #include <iostream>
#include <vector>

int main()
{
    int scope = 90;

    std::vector<int> arr;

    int n = 2;

    for (int i = n; i < scope; i  )
    {
        arr.push_back(i);
    }

    int index = 0;
    while ((n * n) <= scope)
    {
        int size = (int)arr.size();
        for (int i = index   1; i < size; i  )
        {
            if (arr[i] % n == 0)
            {
                arr.erase(arr.begin()   i);
            }
        }

        index  = 1;
        n = arr[index];
    }

    int final_size = (int)arr.size();

    for (int i = 0; i < final_size; i  )
    {
        std::cout << arr[i] << std::endl;
    }
}
 

это работает нормально, но только тогда, когда область действия Когда он превышает 90, я получаю сообщение об ошибке:

 zsh: segmentation fault 
 

Я новичок и не могу понять причину этого. Что не так с моим кодом?

Комментарии:

1. Какие обновления size появляются, когда вы удаляете вещи из arr своего цикла?

2. @StephenNewell Спасибо! Теперь я понимаю, в чем была проблема