Следующий код, который печатает некоторые простые числа с использованием sieve, генерирует ошибку SIGSEGV на онлайн-судье.
int main()
{
long count=1;
int arr[100000000];
printf("2\n");
for(long i=3;i<100000000;i=i+2)
{
arr[i]=1;
}
for(long i=3;i<100000000;i=i+2)
{
if(arr[i]==1)
{
count++;
if(count%100==1)printf("%ld\n",i);
for(long j=2;i*j<100000000;j++)
arr[i*j]=0;
}
}
//scanf("%ld",&count);
}
но если я уберу некоторые утверждения как:
for(long i=3;i<100000000;i=i+2)
{
if(arr[i]==1)
{
count++;
}
}
изменить второй цикл, как указано выше. это не показывает ошибку. Может ли какая-то помощь относительно того, почему это происходит и как исправить это в первой программе.