点击打开链接http://acm.hdu.edu.cn/showproblem.php?pid=4548
#include<stdio.h>
#define max 1000010
int a[max],sum[max];
int mei(int n)
{
int s=0;
while(n){
s+=n%10;
n/=10;
}
return(s);
}
void zhishu()
{
int i,j;//筛选法
for(i=2;i<max;i++)
a[i]=1;
for(i=2;i<max;i++){
if(a[i]){
for(j=i+i;j<max;j+=i)
a[j]=0;
}
}
//自己理解
for(i=2;i<max;i++){
if(a[i]&&a[mei(i)]){
sum[i]=1;
}
else sum[i]=0;
}
sum[1]=0;
for(i=2;i<max;i++){
sum[i]+=sum[i-1];
}
}
int main()
{
int l,r,t,k=1;
scanf("%d",&t);
zhishu();
while(t--){
scanf("%d%d",&l,&r);
printf("Case #%d: %d\n",k++,sum[r]-sum[l-1]);
}
return 0;
}