P1217回文质数

· · 题解

#include<bits/stdc++.h>
using namespace std;
int a,b;
int size(int x){
    int i=1;
    while(pow(10,i)<x) i++;
    return i;
}
int p(int x){
    int i;
    for(i=2;i*i<=x;i++){
        if(x%i==0) return i;
    }
    return 1;
}
void f(int x,int m,int n){
    if(m>n){
        if(x>=a&&x<=b&&p(x)==1) cout<<x<<endl;
        else return;
    }
    int i;
    if(m==0){
        for(i=1;i<=9;i+=2) f(x+i*pow(10,n)+i*pow(10,m),m+1,n-1);
    }
    if(m<n&&m>0){
        for(i=0;i<=9;i++) f(x+i*pow(10,n)+i*pow(10,m),m+1,n-1);
    }
    if(m==n){
        for(i=0;i<=9;i++) f(x+i*pow(10,m),m+1,n-1);
    }
}
int main(){
    cin>>a>>b;
    int i,la=size(a),lb=size(b);
    for(i=la-1;i<=lb+1;i++) f(0,0,i);
}