2814: 【例46.3】 素数回文数的个数

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:12 解决:5

题目描述

求$11$到$n$之间(包括$n$),既是素数又是回文数的整数有多少个。

输入

一个大于$11$且小于$1000$的整数$n$。

输出

$11$到$n$之间的素数回文数个数。

样例输入 复制

23

样例输出 复制

1

提示

#include<bits/stdc++.h>
using namespace std;
int n,cnt;
bool is_p(int x){
    if(x<2) return false;
    if(x==2) return true;
    for(int i=2;i*i<=x;i++){
        if(x%i==0) return false;
    }
    return true;
}
bool is_r(int x){
    int a[10],cnt=0;
    memset(a,0,sizeof(a));
    while(x>0){
        cnt++;
        a[cnt]=x%10;
        x/=10;
    }
    for(int i=1;i<=cnt/2;i++){
        if(a[i]!=a[cnt-i+1]) return false;
    }
    return true;
}
int main(){
    cin>>n;
    for(int i=11;i<=n;i++){
        if(is_p(i)&&is_r(i)) cnt++;
    }
    cout<<cnt;
    return 0;
}