Description
定义一个类SpecialPrime,只有一个静态成员函数
bool judge(int value)
用于判断value是否是一个回文素数。所谓回文素数是指一个数既是回文数又是素数。
Input
输入两个数m和n,0<m<n。
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
int main()
{
int m, n, i;
cin>>m>>n;
for (i = m; i < n; i++)
{
if (SpecialPrime::judge(i))
cout<<i<<endl;
}
return 0;
}
代码
#include <iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<iomanip>
#include<vector>
#include<cmath>
#include<typeinfo>
using namespace std;
int prime[1000010];
class SpecialPrime
{
public:
static int flag;
SpecialPrime(){};
static bool judge(int n)
{
int s[1000];
int x = 0;
if(flag==0){p();flag = 1;}
if(prime[n]==1){return false;}
while(n!=0)
{
s[x] = n%10;
n = n/10;
x++;
}
for(int i = 0; i<x; i++)
{
if(s[i]!= s[x-1-i]){return false;}
}
return true;
}
static void p()
{
memset(prime,0,sizeof(prime));
for(int i =2; i<sqrt(1000000); i++)
{
if(prime[i] == 0)
{
for(int j = i*i; j<1000000; j=j+i){prime[j] = 1;}
}
}
}
~SpecialPrime(){};
};
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;
}