...el resultado que me da es: 1179908154
pero yo se que ese no es el resultado correcto, el resultado correcto es: 142913828922
Te da ese resultado porque usas una variable de tipo int para contener la suma de los números primos. Las variables de tipo int solo pueden contener valores en el rango
-2147483648 <= int <= 2147483647 (en compiladores de 32 bits)
La suma total de los números (142913828922) queda fuera de ese rango por lo que no puede ser representada con variables int..
Probé usando una variable de tipo double y dio el resultado correcto.
Ah una cosa más, los indices de los arreglos en C y C++ comienzan en 0 no en 1 asi que también se tuvo que corregir eso
...
int sieve[lim+1];
double sum;
...
for(i=1;i<=lim;i++){
if(sieve[i])
sum+=i;
}
printf("%.0fn", sum);
Saludos.