SDUSTOJ2210 Problem H: 回文素数

Description

定义一个类SpecialPrime,只有一个静态成员函数

bool judge(int value)

用于判断value是否是一个回文素数。所谓回文素数是指一个数既是回文数又是素数。

Input

输入两个数m和n,0

Output

区间[m,n]内的所有回文素数。

Sample Input

2 1000

Sample Output

2
3
5
7
11
101
131
151
181
191
313
353
373
383
727
757
787
797
919
929

HINT

Append Code

append.cc,

标程

#include 
using namespace std;
#define maxn 1000000
int a[maxn];
int b[maxn];
 
class SpecialPrime {
    public:
        static int flag;
        static void prime() {
            int pnum = 0;
            int i = 0,j = 0;
            int n;
            a[0]=1;a[1]=1;
            for(i=2;i<=maxn;i++) {
                if(a[i] == 0) b[++pnum] = i;
                for(j = 1;j <= pnum; j++) {
                    if(i*b[j] > maxn) break;
                    a[i*b[j]] = 1;
                    if(i % b[j] == 0) break;
                }
            }
        }
        static bool judge(int n) {
            if(n <= 1) return false;
            if(n == 2) return true;
            if(!flag) {prime(); flag++;}
            if(a[n] == 1) return false;
            char s[1000], s1[1000];
            sprintf(s, "%d", n);
            strcpy(s1, s);
            reverse(s, s+strlen(s));
            if(! strcmp(s1, s)) return true;
            return false;
        }
};
 
int SpecialPrime::flag = 0;
 
int main()
{
    int m, n, i;
    cin>>m>>n;
    for (i = m; i < n; i++)
    {
        if (SpecialPrime::judge(i))
            cout<<i<<endl;
    }
    return 0;
}

你可能感兴趣的:(SDUSTOJ2210 Problem H: 回文素数)