Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define max 1000000
- #define pb push_back
- #define pairs pair<int, int>
- #define vi vector<int>
- #define vb vector<bool>
- #define vii vector<pairs>
- #define lb lower_bound
- #define ub upper_bound
- #define lli long long int
- #define endl '\n'
- using namespace std;
- bool isPrime[max];
- vi Prime;
- bool getPrime(int n) {
- if (n < 2) return false;
- if (n == 2) return true;
- if (n % 2 == 0) return false;
- return isPrime[n] == true;
- }
- void sieve() {
- memset(isPrime, true, sizeof(isPrime)); // first all odd number's prime
- isPrime[0] = 0, isPrime[1] = 0;
- // Sieve
- for (int i = 2; i * i <= max; i++) {
- if(isPrime[i]) {
- for (int j = i * i; j <= max; j += i) {
- isPrime[j] = 0;
- }
- }
- }
- }
- int main() {
- #ifdef Niloy
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- sieve();
- int t, l, r;
- scanf("%d", &t);
- while(t--) {
- Prime.clear();
- scanf("%d %d", &l, &r);
- int low = 0, high = 0, count(0);
- for (int i = l; i <= r; i++) {
- if(isPrime[i]) {
- Prime.pb(i);
- }
- }
- for (int i = 0; i < Prime.size(); i++) {
- int a = Prime[i];
- int sum = 0;
- while (a) {
- int temp = a % 10;
- sum += temp;
- a /= 10;
- }
- if(getPrime(sum)) {
- count++;
- }
- }
- printf("%d\n", count);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment