fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. vector<int> gen_primes_sieve(int max)
  7. {
  8. // uzywam vector<char> zamiast vector<bool> bo vector<bool> ma jakies glupie
  9. // optymalizacje pojemnosci przez co dziala wolniej,
  10. // mozesz zmienic jesli chcesz
  11. vector<char> is_not_prime(max + 1, false);
  12. vector<int> ret;
  13.  
  14. // po kolei sprawdzamy kazda liczbe (0 i 1 nie sa pierwsze z zalozenia)
  15. for (int i = 2; i <= max; i++)
  16. {
  17. if (!is_not_prime[i])
  18. {
  19. ret.push_back(i);
  20. // jesli i jest liczba pierwsza to:
  21. // i * 2, i * 3, i * 4, ...
  22. // juz nie sa
  23. for (int j = i * 2; j <= max; j += i)
  24. {
  25. is_not_prime[j] = true;
  26. }
  27. }
  28. }
  29.  
  30. return ret;
  31. }
  32.  
  33. int main()
  34. {
  35. vector<int> primes = gen_primes_sieve(100);
  36. for (auto prime : primes)
  37. {
  38. cout << prime << endl;
  39. }
  40. return 0;
  41. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97