题意:
题解:
代码:
#include<iostream>
#include<string.h>
#include<string>
int u2[1100001]; //前缀的位素数个数
bool u[1100001]; //素数筛法
using namespace std;
void prepare()
{
int i,j;
memset(u,true,sizeof(u));
for(i=2;i<1100001;i++)
if(u[i])
for(j=2;j*i<=1100001;j++)
u[j*i]=false;
}
bool ok(int x)
{
int k=0;
while(x) k+=x%10;x/=10;
return u[k];
}
int main()
{
int i,j,k;
prepare();
for(i=2;i<1100001;i++)if(u[i]&&ok(i)) u2[i]=1;
for(i=2;i<1100001;i++) u2[i]+=u2[i-1];
cin>>k;
while(k--){
cin>>i>>j;
cout<<u2[j]-u2[i-1]<<endl; //区间中 素数的个数
}
return 0;
}