#include<cstdio>
#include<cstring>
#define N 100000+10
int pr[N],p[N/10],lp;
bool a[N],b[N];
int sum[N];
void gp(){
for(int i=2;i<N;i++){
if(!pr[i])p[lp++]=pr[i]=i;
for(int j=0;j<lp && i*p[j]<N;j++){
pr[i*p[j]]=p[j];
if(i%p[j]==0)break;
}
}
}
void init()
{
int i;
for(i=0;p[i]>1;i++)
a[p[i]]=true;
for(i=0;i<N;i++)
{
int temp=i;
int mod=0;
while(temp)
{
mod+=temp%10;
temp/=10;
}
if(a[i]==true && a[mod]==true)
b[i]=true;
}
}
void getsum()
{
int i;
for(i=0;i<N;i++)
if(b[i])
sum[i]++;
for(i=1;i<N;i++)
sum[i]=sum[i]+sum[i-1];
}
int main()
{
int t,cnt,l,r,i;
memset(a,false,sizeof(a));
memset(b,false,sizeof(b));
memset(sum,0,sizeof(sum));
gp();
init();
getsum();
int cases=1;
scanf("%d",&t);
while(t--)
{
cnt = 0;
scanf("%d%d",&l,&r);
printf("Case #%d: %d\n",cases++,sum[r]-sum[l-1]);
}
return 0;
}
hdu 4548
最新推荐文章于 2020-05-23 20:08:38 发布