Niloy007

Ultra Prime || Hackerrank (Got TLE)

May 12th, 2020
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.64 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define max 1000000
  3. #define pb push_back
  4. #define pairs pair<int, int>
  5. #define vi vector<int>
  6. #define vb vector<bool>
  7. #define vii vector<pairs>
  8. #define lb lower_bound
  9. #define ub upper_bound
  10. #define lli long long int
  11. #define endl '\n'
  12. using namespace std;
  13.  
  14. bool isPrime[max];
  15. vi Prime;
  16.  
  17. bool getPrime(int n) {
  18.   if (n < 2) return false;
  19.   if (n == 2) return true;
  20.   if (n % 2 == 0) return false;
  21.   return isPrime[n] == true;
  22. }
  23.  
  24. void sieve() {
  25.     memset(isPrime, true, sizeof(isPrime));     // first all odd number's prime
  26.  
  27.     isPrime[0] = 0, isPrime[1] = 0;
  28.  
  29.     // Sieve
  30.     for (int i = 2; i * i <= max; i++) {
  31.         if(isPrime[i]) {
  32.             for (int j = i * i; j <= max; j += i) {
  33.                 isPrime[j] = 0;
  34.             }
  35.         }
  36.     }
  37. }
  38.  
  39.  
  40. int main() {
  41. #ifdef Niloy
  42.     freopen("input.txt", "r", stdin);
  43.     freopen("output.txt", "w", stdout);
  44. #endif
  45.     ios_base::sync_with_stdio(false);
  46.     cin.tie(NULL);
  47.  
  48.     sieve();
  49.  
  50.     int t, l, r;
  51.     scanf("%d", &t);
  52.     while(t--) {
  53.         Prime.clear();
  54.         scanf("%d %d", &l, &r);
  55.         int low = 0, high = 0, count(0);
  56.  
  57.         for (int i = l; i <= r; i++) {
  58.             if(isPrime[i]) {
  59.                 Prime.pb(i);
  60.             }
  61.         }
  62.  
  63.         for (int i = 0; i < Prime.size(); i++) {
  64.             int a = Prime[i];
  65.             int sum = 0;
  66.             while (a) {
  67.                 int temp = a % 10;
  68.                 sum += temp;
  69.                 a /= 10;
  70.             }
  71.  
  72.             if(getPrime(sum)) {
  73.                 count++;
  74.             }
  75.         }
  76.         printf("%d\n", count);
  77.     }
  78.  
  79.     return 0;
  80. }
Add Comment
Please, Sign In to add comment