B2136
思路
由题可知,素数回文数既是一个素数,也是一个回文数。所以可以定义两个函数来判断是否符合素数回文数的两个条件。
方法
判断素数
使用循环让这个数对
判断回文数
先定义两个数组。用循环将数的每一位分解出来放入第一个数组,再将第一个数组倒过来装进第二个数组。最后判断第一个数组与第二个数组是否完全相等即可。
代码
#include<bits/stdc++.h>
using namespace std;
bool ss(int x)//判断素数
{
for(int i=2;i<=x-1;i++)
if(x%i==0)
return false;
return true;
}
bool hw(int x)//判断回文数
{
int t=0,m=0,a[15],b[15];
while(x!=0)
{
t++;
a[t]=x%10;
x/=10;
}
for(int i=t;i>=1;i--)
{
m++;
b[m]=a[i];
}
for(int i=1;i<=t;i++)
if(a[i]!=b[i])
return false;
return true;
}
int main()
{
int n,ans=0;
cin>>n;
for(int i=11;i<=n;i++)
if(hw(i)&&ss(i))//如果两个条件均符合,计数器就加一
ans++;
cout<<ans;
return 0;
}