【题目描述】
找出正整数M和N之间(N不小于M)的所有真素数。
例如,11,13均为真素数,因为11的反序还是为11,13的反序为31也为素数。
真素数的定义:如果一个正整数P为素数,且其反序也为素数,那么P就为真素数。
【输入】
输入两个数M和N,空格间隔,1≤M≤N≤100000。
【输出】
按从小到大输出M和N之间(包括M和N)的真素数,逗号间隔。如果之间没有真素数,则输出No。
【输入样例】
10 35
【输出样例】
11,13,17,31
#include<iostream>
#include<cmath>
using namespace std;
bool judge(int x);
int inverted(int n);
int a[100000];
int main()
{
int m,n;
int i;
int k=0;
bool flag=false;
cin>>m>>n;
for(i=m; i<=n; i++) //从m枚举到n
if( judge(i) && judge(inverted(i)) )//分别判断i以及i变换后是否是素数
{
k++;
a[k]=i;
flag=true;
}
if(flag)
{
for(i=1; i<k; i++)
cout<<a[i]<<",";
cout<<a[k]<<endl;
}
else
cout<<"No"<<endl;
return 0;
}
bool judge(int x)//判断素数
{
int i=2;
if(x==0||x==1) return false;
while( i<=floor(sqrt(x)) && (x%i!=0) )
i++;
if(i>floor(sqrt(x)))
return true;
return false;
}
int inverted(int n)//求倒序数
{
int sum=0;
while(n>0)
{
sum=sum*10+n%10;
n/=10;
}
return sum;
}
信息学奥赛一本通T1411:函数 区间内的真素数 归属于 函数,更多同类题解源程序见:函数 和 区间内的真素数
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!