Blame view
07 - Primeros 10001 primos/tstP07.cpp
1.07 KB
a70faf338 p07: Optimizando ... |
1 2 |
#include <stdio.h> #include <math.h> |
f47e92536 p07: Listo |
3 |
#define SIZE_ARRAY 10001 |
a70faf338 p07: Optimizando ... |
4 5 6 |
bool esPrimo(int eval, int *primosConocidos); bool esPar(int eval); |
f47e92536 p07: Listo |
7 |
int *lastAddr = 0; |
a70faf338 p07: Optimizando ... |
8 9 10 |
int main(int argc, char const *argv[]) { |
a70faf338 p07: Optimizando ... |
11 12 |
int arrayPrime[SIZE_ARRAY] = { 0 }; int counter; |
a70faf338 p07: Optimizando ... |
13 14 |
bool valido; |
f47e92536 p07: Listo |
15 16 17 |
//Agregando valores conocidos arrayPrime[0] = 2; arrayPrime[1] = 3; |
a70faf338 p07: Optimizando ... |
18 |
|
f47e92536 p07: Listo |
19 20 |
//Init counter = 3; |
a70faf338 p07: Optimizando ... |
21 22 |
do { |
f47e92536 p07: Listo |
23 |
counter+=2; |
a70faf338 p07: Optimizando ... |
24 |
valido = esPrimo(counter, arrayPrime); |
a70faf338 p07: Optimizando ... |
25 26 27 28 29 30 31 |
} while (arrayPrime[SIZE_ARRAY-1] == 0); printf("El primo #%d es:\t%d ", SIZE_ARRAY, arrayPrime[SIZE_ARRAY-1]); return 0; } |
a70faf338 p07: Optimizando ... |
32 33 34 35 |
bool esPrimo(int eval, int *primosConocidos) { bool valido = true; double res = 0; |
f47e92536 p07: Listo |
36 37 |
res = sqrt(eval); while(*primosConocidos != 0) |
a70faf338 p07: Optimizando ... |
38 |
{ |
f47e92536 p07: Listo |
39 |
if((double) *primosConocidos <= res) |
a70faf338 p07: Optimizando ... |
40 |
{ |
f47e92536 p07: Listo |
41 |
if ( eval % *primosConocidos == 0 ) |
a70faf338 p07: Optimizando ... |
42 |
{ |
f47e92536 p07: Listo |
43 44 |
valido = false; break; |
a70faf338 p07: Optimizando ... |
45 46 47 |
} else { |
f47e92536 p07: Listo |
48 |
primosConocidos++; |
a70faf338 p07: Optimizando ... |
49 |
} |
f47e92536 p07: Listo |
50 51 52 |
} else { |
a70faf338 p07: Optimizando ... |
53 |
|
f47e92536 p07: Listo |
54 |
lastAddr = (lastAddr == 0) ? ++primosConocidos : lastAddr + 1; |
a70faf338 p07: Optimizando ... |
55 |
|
f47e92536 p07: Listo |
56 57 58 59 |
primosConocidos = lastAddr; *primosConocidos = eval; valido = true; break; |
a70faf338 p07: Optimizando ... |
60 61 62 63 64 65 66 67 |
} } return valido; } bool esPar(int eval) { return eval % 2 == 0; } |