#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 Спасибо! Теперь я понимаю, в чем была проблема