Está claro que no me exprese bien, sorry!!!.
Yo no hablaba del caso de comprobar si "un" número concreto es o no primo sino de calcular los números primos en un intervalo, como de 1 10^8, por ejemplo. Está claro que si sólo es un número es casi impepinable usar el método del módulo, y aún así se pueden introducir mejoras.
En cuanto al número de operaciones es al menos menor ya que lo único que se hace es sustituir la operación de "i*i<N" por "primos[ i ]*primos[ i ]<N". El motivo de que sea menor es que en el método del "i*i" se usan todos los impares desde 3 a la raíz del número en el peor de los casos, como en el caso de querer comprobar si 99991 es o no primo, sin embargo en el método del array sólo se usan los primos previamente calculados que obviamente son menores que los impares. La única penalización es el uso de un array y que tampoco ya que lo que procede realmente es ir guardando los primos calculados en en fichero y escribir y leer los cuando proceda. Como ves, se consigue disminuir el número de operaciones módulo en unos cuantos miles, todo lo cual redunda en una mejora, al menos sobre el papel.
No obstante, y para que no digan que hago tareas, será en este otro hilo, cortesía de
ivancea96 aporte_detector_de_numeros_primos_en_c donde podrás encontrar una comparativa de los métodos y donde se pone de manifiesto la bondad del método del uso de "primos" frente al "i*i"
Espero que ahora esté más claro.
Un fuerte saludo de
León amigo
engel lex.
ahora si te comprendí en ese ejemplo si es muy bien aplicable la idea!