Это код, который я представил в онлайн-судье сферы для генерации простых чисел, но у меня возникает ошибка сегментации. Целью является generate prime numbers между заданным диапазоном m до n (с n> m). Это реализовано с использованием алгоритма Sieve of Eratosthenes. Скажите, пожалуйста, где я ошибаюсь. Спасибо :)Сегментация Неисправность в моем коде
#include <stdio.h>
#include <math.h>
int main(){
long int m,n,c1,c2,c3;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&m,&n);
//create prime list
short int *prime;
prime = (short int*)malloc((n-m)*sizeof(short int));
//fill list with 0 - prime
for(c1 = 2; c1 <= n; c1++){
prime[c1] = 1;
}
//set 1 and 0 as not prime
prime[0]=0;
prime[1]=0;
//find primes then eliminate their multiples (0 = prime, 1 = composite)
for(c2 = 2;c2 <= (int)sqrt(n)+1;c2++){
if(prime[c2]){
c1=c2;
for(c3 = 2*c1;c3 <= n; c3 = c3+c1){
prime[c3] = 0;
}
}
}
//print primes
for(c1 = m; c1 <=n; c1++){
if(prime[c1]) printf("%d\n",c1);
}
}
return 0;
}
Ну, где произошла ошибка сегментации? –
У вас есть информация о том, где находится segfault? Очень сложно найти одну ошибку в огромном блоке кода без какого-либо намека на то, где это может быть. – templatetypedef
использовать GDB и определить, где появляется segfault – shybovycha