05:素数回文数的个数
总时间限制:
1000ms
内存限制:
65536kB
描述
求11到n之间(包括n),既是素数又是回文数的整数有多少个。
输入
一个大于11小于1000的整数n。
输出
11到n之间的素数回文数个数。
样例输入
23
样例输出
1
思路:先判断是否为素数,如果是的话,就将它存储在一个数组中,并按两类情况讨论:一类分为两位数,一类为三位数。对他们进行位数分开,倒序相乘求和。判断是否和原来的数相等,如果是,则计数count++;最后输出所记的数。
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,j,k=0;
int a[1000];
scanf("%d",&n);
for(i=11;i<=n;i++){
int m=1;
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
m=0;
break;
}
}
if(m==1){
a[k++]=i;
}
}
int count=0,x,y,z,b=0;
for(i=0;i<k;i++){
if(a[i]<100){
b=a[i];
x=b%10;//取个位数字
b=b/10;
y=b%10;//取十位数字
if((10*x+y)==a[i]){
count++;
}
}
if(a[i]>=100){
b=a[i];
x=b%10;//取个位数字
b=b/10;
y=b%10;//取十位数字
b=b/10;
z=b%10;//取百位数字
if(((10*x+y)*10+z)==a[i]) {
count++;
}
}
}
printf("%d",count);
return 0;
}