这道题目看了好几个大神的做法,对打表的做法表示灰常佩服。。。。。。
这里是借鉴别人的一种做法
代码:
#include<stdio.h>
#include<string.h>
bool num[9999999];
int prime[1000000];
void deal(){//对数据进行处理
int i,j,k;
for(i=2;i<9999999;i+=2){
num[i]=true;
}
for(i=3;i<3500;i++){
if(num[i])
continue;
for(j=i+i;j<9999999;j+=i)
num[j]=true;
}
}
int huiwen(int n){//判断是否是回文数
int k,t,w,temp;
k=n;
temp=0;
while(k){
t=k%10;
temp=temp*10+t;
k/=10;
}
if(temp==n)
return 1;
else
return 0;
}
int main(){
int i,j,k,t,n,m,a,b;
k=2;
deal();
prime[0]=5; prime[1]=7;
for(i=11;i<9999999;i+=2){
if(!num[i]&&huiwen(i))//将满足条件的数据存入数组中
prime[k++]=i;
// printf("%d\n",prime[k--]);
}
while(~scanf("%d %d",&n,&m)){
for(i=0;i<k;i++){
if(prime[i]<n)
continue;
else if(prime[i]>m)
break;
else
printf("%d\n",prime[i]);
}
printf("\n");
}
return 0;
}