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