Advertisement
Guest User

Londer2

a guest
Feb 18th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <vector>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. void mostrar_criba(vector<int> criba)
  8. {
  9. cout << endl;
  10.  
  11. for (int i = 0; i < criba.size(); i++)
  12. cout << criba[i] << "\t";
  13.  
  14. cout << endl;
  15.  
  16. }
  17.  
  18. vector<int> criba_eratostenes(int n)
  19. {
  20. vector<int> criba;
  21. int current_primo; // numero primo que iremos tomando del vector
  22.  
  23. // vector con numeros desde 2 hasta n
  24. for (int i = 2; i <= n; i++)
  25. criba.push_back(i);
  26.  
  27. if (n == 2 || n == 3)
  28. return criba;
  29.  
  30. // iterador para el vector criba
  31. vector<int>::iterator it = criba.begin();
  32.  
  33. current_primo = *it; // El primer primo es el 2
  34.  
  35. do
  36. {
  37. vector<int>::iterator it2 = it + 1;
  38.  
  39. for(; it2 <= criba.end(); it2++)
  40. if(*it2 % current_primo == 0)
  41. criba.erase(it2);
  42.  
  43. it++;
  44. current_primo = *it;
  45.  
  46. } while (pow(current_primo, 2) < n);
  47.  
  48. return criba;
  49. }
  50.  
  51. int main()
  52. {
  53. int n; // Limite de criba
  54. vector<int> num_primos;
  55.  
  56. cout << "Numero limite de numeros: ";
  57. cin >> n;
  58.  
  59. num_primos = criba_eratostenes(n);
  60.  
  61. mostrar_criba(num_primos);
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement