素数回文数的个数
题目描述
求 11 11 11 到 n n n 之间(包括 n n n),既是素数又是回文数的整数有多少个。
输入格式
一个大于 11 11 11 小于 10000 10000 10000 的整数 n n n。
输出格式
11 11 11 到 n n n 之间的素数回文数个数。
样例 #1
样例输入 #1
23
样例输出 #1
1
提示
回文数指左右对称的数,如: 11 11 11, 12121 12121 12121。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>//素数回文数的个数
bool num[10010];
int func1(int m){//判断数据是否是回文数
int sum=0;
int n=m;
while(n!=0){
sum*=10;
sum+=n%10;
n/=10;
} //求该数的反序数据
if(sum==m){
return 1;
}//比较正序和反序的值是否相同
else{
return 0;
}//不同返回0
}//
int main(){
int i,j,n,sum=0;
for(i=2;i<=100;i++){
for(j=2;j*i<=10010;j++){
num[i*j]=1;
}
}//对所有的素数进行打表
scanf("%d",&n);
for(i=11;i<=n;i++){
if(num[i]==0&&func1(i)){
sum++;
}//题中已经给出数据从11开始
}
printf("%d\n",sum);//输出回文质数的个数
return 0;
}