Guest User

Prime 1

a guest
Jun 9th, 2015
1,573
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.31 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. typedef unsigned long long ll;
  4. using namespace std;
  5.  
  6. #define all(x) x.begin(), x.end()
  7. #define f(i,a,b) for(int i = (a); i <= (b); i++)
  8. #define fd(i,a,b) for(int i = (a); i >= (b); i--)
  9. #define mp make_pair
  10. #define faster_io() ios_base::sync_with_stdio(false)
  11. #define pb push_back
  12. #define pii pair<int,int>
  13. #define SZ(x) ((int)x.size())
  14. #define vii vector<pair<int,int>>
  15.  
  16. const int INF = 1000000007;
  17. const ll INFLL = 100000000000000000ll;
  18. const ll MOD = 1000000007;
  19.  
  20. // ----------------------------------------------------------------------------------------------------------
  21.  
  22. bool U[31705];
  23. int T, A, B;
  24. unordered_set<int> NP;
  25. vector<int> P;
  26.  
  27. int main()
  28. {
  29.     cin >> T;
  30.  
  31.     // Generate list of primes <= sqrt(10^9)
  32.  
  33.     f(i,2,31700) if(!U[i]) for(int k = 2*i; k <= 31700; k += i) U[k] = true;
  34.     f(i,2,31700) if(!U[i]) P.pb(i);
  35.  
  36.     NP.insert(1); // Mark 1 as not prime
  37.  
  38.     f(t,1,T)
  39.     {
  40.         cin >> A >> B;
  41.  
  42.         // Generate all non-prime numbers in the range [A,B]
  43.  
  44.         for(int p : P)
  45.         {
  46.             int x = max(A/p,2);
  47.             for(int k = p*x; k <= B; k += p) NP.insert(k);
  48.         }
  49.  
  50.         // Check what numbers are prime in range [A,B]
  51.  
  52.         f(i,A,B) if(NP.find(i) == NP.end()) printf("%d\n", i);
  53.         printf("\n");
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment