Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<math.h>
- #define mx 1000007
- int N = 1000005;
- int status[mx];
- void seive()
- {
- int i, j, root;
- for( i = 2; i <= N; i++ ) status[i] = 0;
- root = int( sqrt((double) N ));
- for( i = 3; i <= root; i += 2 )
- {
- if( status[i] == 0 )
- {
- for( j = i * i; j <= N; j += i + i )
- status[j] = 1;
- }
- }
- }
- int digit_prime(int m)
- {
- int j=0;
- while(m!=0)
- {
- j+=(m%10);
- m/=10;
- }
- return j;
- }
- int main()
- {
- int n, a, i, j, b, c, d;
- seive();
- scanf("%d", &n);
- while(n--)
- {
- j=0;
- scanf("%d %d", &a, &b);
- if(a==2)
- j+=1;
- else if(a%2==0)
- a+=1;
- for(i=a; i<=b; i+=2)
- {
- if(status[i]==0)
- {
- d=digit_prime(i);
- if(d==2){
- j++;
- }
- else if(d%2!=0){
- if(status[d]==0)
- {
- j++;
- }
- }
- }
- }
- printf("%d\n", j);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement