¿Por qué recibo un error SIGSEGV en el tamiz segmentado de Eratóstenes (PRIME1)?

El problema con su código está en la línea no. 40 donde pones
primesnow[j] = false;
En primer lugar, le ha dado a primesnow 100000 bytes. Y luego en la parte,

para (int i = 0; i <cnt; i ++) {
p = myprimes [i];
s = (m / p) * p;
para (j = s; j <= n; j + = p) {
si (j n)
continuar;
primesnow [j] = falso;
}
}

observe que j puede ir hasta n, es decir, 10 ^ 9 a máx. Y en ese momento está configurando primesnow [10 ^ 9] = false ;
No hay suficiente memoria incluso en el montón y, por lo tanto, su programa está recibiendo una falla de segmentación .
Algunas cosas que debes tener en cuenta:
1) Asignar suficiente memoria a la matriz. Su programa funcionará hasta
n = 10 ^ 7 solo porque el montón tiene tanta memoria disponible pero ha asignado solo 10 ^ 5 bytes a primesnow . No es seguro.
2) Evite crear una matriz tan grande. Intenta mantener el código simple. Lo siento, pero seive es simple de codificar, lo hiciste un poco complicado 🙂
3) Por último, sobre la pregunta PRIME1, se le ha dado la información nm <= 100000 . Utilizar esta. Personalmente lo resolví usando la propiedad 6n +/- 1 de primos. Era un código simple de 50 líneas.

Comenta si no entendiste una parte. Estaré encantado de ayudar 🙂

More Interesting

¿Qué debe saber todo programador sobre tablas hash y funciones hash?

¿Existe un libro o sitio web que describa los problemas y luego le solicite la estructura de datos / algoritmos más apropiados necesarios para resolver el problema?

Cómo implementar un algoritmo de programación de CPU del sistema operativo que evita que se produzcan puntos muertos

¿Qué algoritmos existen para la reconstrucción de un conjunto de vectores de un diccionario de cardinalidad más pequeña?

¿Cuál es el mejor libro para aprender a programar en estructuras de datos y algoritmos desde el principio?

¿Qué algoritmos se pueden usar para encontrar un objeto similar en una base de datos que contenga múltiples atributos, numéricos, categóricos y no categóricos?

¿Cómo podemos transferir datos digitales binarios a un canal físico?

¿Cuál es la diferencia entre usar <y <= en la búsqueda binaria?

¿En qué se diferencia la ramificación y el límite del retroceso?

¿Cuáles son ejemplos de problemas en los que entrenar un ANN es la solución óptima?

¿Es una persona inteligente debido a los 'algoritmos' que usa su cerebro? Si es así, ¿alguien podría copiar ese 'algoritmo' para ser igualmente inteligente?

¿Por qué encontrar el trabajo múltiple menos común?

¿Cómo funciona la función recursiva a continuación?

Cómo agregar un elemento a una matriz en Java

¿Cuáles son los algoritmos de geometría computacional que aparecen en los concursos de programación? ¿Cuál de ellos es más frecuente que los demás? ¿Qué estructuras de datos geométricos aparecen en los concursos de programación?