B2136

· · 题解

思路

由题可知,素数回文数既是一个素数,也是一个回文数。所以可以定义两个函数来判断是否符合素数回文数的两个条件。

方法

判断素数

使用循环让这个数对 2 至这个数减去一的每一个数进行取模,如果都没有取模尽,说明这个数是一个素数。

判断回文数

先定义两个数组。用循环将数的每一位分解出来放入第一个数组,再将第一个数组倒过来装进第二个数组。最后判断第一个数组与第二个数组是否完全相等即可。

代码


#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;       
}