题目描述
找出正整数M和N之间(N不小于M)的所有真素数。
真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。
例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。
【输入】
输入两个数M和N,空格间隔,1<=M<=N<=100000。
【输出】
按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。
样例
【输入样例】
10 35
【输出样例】
11,13,17,31
今天直接上代码
C++ 代码
#include<iostream>
using namespace std;
bool func(int n)
{
for(int i=2;i*i<=n;i++)
{
if(n%i==0) return false;
}
int temp=0;
while(n>0)
{
temp=(temp+n%10)*10;
n/=10;
}
temp/=10;
for(int i=2;i*i<=temp;i++)
{
if(temp%i==0) return false;
}
return true;
}
int main()
{
int n,m;
cin>>m>>n;
int sum=0;
for(int i=m;i<=n;i++)
{
if(func(i))
{
if(sum==0)
cout<<i;
else
cout<<","<<i;
sum++;
}
}
if(sum==0) cout<<"No";
}