#include #include #define SIZE_ARRAY 10001 bool esPrimo(int eval, int *primosConocidos); bool esPar(int eval); int *lastAddr = 0; int main(int argc, char const *argv[]) { int arrayPrime[SIZE_ARRAY] = { 0 }; int counter; bool valido; //Agregando valores conocidos arrayPrime[0] = 2; arrayPrime[1] = 3; //Init counter = 3; do { counter+=2; valido = esPrimo(counter, arrayPrime); } while (arrayPrime[SIZE_ARRAY-1] == 0); printf("El primo #%d es:\t%d\n", SIZE_ARRAY, arrayPrime[SIZE_ARRAY-1]); return 0; } bool esPrimo(int eval, int *primosConocidos) { bool valido = true; double res = 0; res = sqrt(eval); while(*primosConocidos != 0) { if((double) *primosConocidos <= res) { if ( eval % *primosConocidos == 0 ) { valido = false; break; } else { primosConocidos++; } } else { lastAddr = (lastAddr == 0) ? ++primosConocidos : lastAddr + 1; primosConocidos = lastAddr; *primosConocidos = eval; valido = true; break; } } return valido; } bool esPar(int eval) { return eval % 2 == 0; }