#include<stdio.h>
#include<iostream>
using namespace std;
int num[1000010]={0},sum[1000010]={0};
void prime(){
int i,j;
num[0]=num[1]=1;
for(i=2;i<=1000;i++){
if(!num[i]){
for(j=i*i;j<=1000000;j+=i)
num[j]=1;
}
}
}
void SUM(){
int i,j,k;
for(i=1;i<=1000000;i++){
if(!num[i]){
j=i,k=0;
while(j){
k+=j%10;
j/=10;
}
if(!num[k]) sum[i]=sum[i-1]+1;
else sum[i]=sum[i-1];
}else sum[i]=sum[i-1];
//加快运算
}
}
int main(){
int n,m,i,j,t,s,k,v;
prime();
SUM();
scanf("%d",&t);
v=0;
while(t--){
scanf("%d%d",&n,&m);
if(n>m){
int temp=n;
n=m;
m=temp;
}
printf("Case #%d: %d\n",++v,sum[m]-sum[n-1]);
}
return 0;
}
hdu 4548 美素数(筛选法求素数)
最新推荐文章于 2020-01-16 20:36:13 发布