因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b] (5 \le a < b \le 100,000,000)a,b( 一亿)间的所有回文质数。
#include <bits/stdc++.h>
using namespace std;
bool huiwen(int x){
int y=x,s=0;
while( y!=0 ){
s = s*10 + y%10;
y /= 10;
}
if(s==x) return 1;
else return 0;
}
//int sushu(int x){
//
// for(int i=2 ;i*i<=x ;++i){
// if( x%i==0 ) return 0;
// }
//
// return 1;
//}
bool sushu(int x){
if ( x<=3) return 1;
if ( x%6!=1 && x%6!=5) return 0;
for (int i=5 ;i<=sqrt(x) ; i+=6 ){
if(x%i==0 || x%(i+2)==0)
return 0;
}
return 1;
}
const long long MAXN=0x3f3f3f;
int palindromes[MAXN]={0};
int main(){
int a,b,l=1;
cin>>a>>b;
for(int y=a ;y<=b ;++y)
if( huiwen(y)==1 ){
palindromes[l]=y;
l +=1;
}
for(int u=1 ;u<l ;++u)
if( sushu(palindromes[u]) ) cout<<palindromes[u]<<endl;
return 0;
}
最后直接TL 先想想还有什么优化方法