
Cálculo de los número primos en C++
C/Visual C
Publicado el 23 de Julio del 2002 por Ismael Cortés V.
24.910 visualizaciones desde el 23 de Julio del 2002
Programa que muestra tantos numeros primos como se le indique al momento de compilacion. Debido a que copia los numeros primos obtenidos en memoria, se puede cambiar facilmente para que se use como una funcion en lugar de ser parte del codigo. No hay mucho que decir, el programa es bastante rapido al correr (hablando relativa mente) pues debido a el metodo de division (usando los numeros primos obtenidos), la mitad de los numeros naturales son descartados rapidamente en la primera pasada. El codigo se podria oprimizar un poco cambiando la sentencia:
"numero++;" (sin comillas) por la sentencia "numero+=2;", pero es poco lo que se puede hacer.
"numero++;" (sin comillas) por la sentencia "numero+=2;", pero es poco lo que se puede hacer.
Comentarios sobre la versión: Versión 1 (2)
#include <stdio.h>
#define MAX_PRIMOS 66559
void main(void) {
unsigned long numero = 3;
unsigned long primos[MAX_PRIMOS];
unsigned long primos_num = 1;
//Primer numero primo: 2
primos[0] = 2;
while (primos_num < MAX_PRIMOS) {
unsigned long i = 0; //Indice para la coleccion de numeros primos
while (i < primos_num && (numero%primos[i])) { //"Loop" hasta usar la coleccion completa
i++;
}
if (i == primos_num) { //si no se pudo dividir el numero
printf("%lu ", numero); // Se imprime el resultado
primos[primos_num] = numero; //Entonces guardamos el numero en el indice actual
primos_num++; //incremento del numero de numeros primos
}
numero++; //Incrementamos el numero
}
//FIN DEL "LOOP"
}