5 真质数
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: G++;GCC
描述
找出正整数M和N之间(N不小于M)的所有真质数。 真质数的定义:如果一个正整数P为质数,且其反序也为质数,那么P就是真质数。 例如,11,13均为真质数,因为11的反序还是为11,13的反序为31也为质数。
输入格式
输入两个数M和N,空格间隔,1≤M≤N≤1000。
输出格式
按从小到大输出M和N之间(包括M和N)的真质数,每行一个。 如果之间没有真质数,则输出NO。
输入样例
10 35
输出样例
11 13 17 31
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int m,n;
//iss(int x)函数的功能:判断x是否是素数
bool iss(int x)
{
for(int i=2;i*i<=x;i++)
{
if(x%i==0)return false;
}
return true;
}
/* zss(int y)执行两个功能:
1.对 y求反序ny
2. 判断y和n */
bool zss(int y)
{
int a[10],ly=y;
int i=0,ny=0,g=1;
while(ly)
{
a[i++]=ly%10;
ly=ly/10;
} while(i>=0) {
ny+=g*a[i-1];
g*=10;
i--;
}
if(iss(y)&&iss(ny))return true;
else return false;
}
int main()
{
int b[10000];
int j=0;
cin>>m>>n;
bool iszss=true;
for(int i=m;i<=n;i++)if(zss(i))
{ b[j++]=i;
iszss=false;
}
for(int k=0;k<j-1;k++)cout<<b[k]<<"\n";
if(iszss)cout<<"NO";
if(b[j-1]!=0)
cout<<b[j-1];
if(b[j-1]==0)
cout<<"";
return 0;
}