fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. #define all(a) a.begin() ,a.end()
  5.  
  6. vector<ll> sieve(ll n)
  7. {
  8. vector<bool> prime(n + 1, true);
  9. prime[0] = false;
  10. prime[1] = false;
  11. for (ll i = 2; i*i <= n; i++) {
  12.  
  13. // If prime[i] is not changed, then it
  14. // is a prime
  15. if (prime[i]) {
  16.  
  17. // Update all multiples of p
  18. for (ll j = i * i; j <= n; j += i)
  19. prime[j] = false;
  20. }
  21. }
  22.  
  23. // push all the primes into the vector ans
  24. vector<ll> ans;
  25. for (ll i = 0; i < n; i++)
  26. if (prime[i])
  27. ans.push_back(i);
  28. return ans;
  29. }
  30.  
  31. vector<ll> sieveRange(ll l , ll r){
  32. vector<ll> primeSieve = sieve(r);
  33. ll lower_bound_prime = lower_bound(all(primeSieve),l)-primeSieve.begin();
  34. primeSieve.erase(primeSieve.begin(),primeSieve.begin()+lower_bound_prime);
  35. return primeSieve;
  36. }
  37.  
  38. int main() {
  39. ll l =12;
  40. ll r = 100;
  41. vector<ll>ans = sieveRange(l,r);
  42. for(int x:ans)cout<<x<<" ";
  43. return 0;
  44. }
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97