版权声明:请勿轻易转载 https://blog.csdn.net/weixin_43838723/article/details/84674389
1411:区间内的真素数
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 3319 通过数: 1382
【题目描述】
找出正整数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
【来源】
http://ybt.ssoier.cn:8088/problem_show.php?pid=1411
源代码
#include<iostream>
#include<cmath>
using namespace std;
int prime(int x)//Judge a prime number
{
int i;
bool flag=true;
if(x==0||x==1)
flag=false;
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
flag=false;
return flag;
}
int fun(int y)//Switch the number order
{
int sum=0;
while(y>0)
{
sum=sum*10+y%10;
y/=10;
}
return sum;
}
int main()
{
int m;
int n;
cin>>m>>n;
int i;
int ans=0;
int a[100000]={0};//Array initialization
for(i=m;i<=n;i++)
if(prime(i)&&prime(fun(i)))
{
a[ans]=i;//Reads into an array
ans++;
}
if(ans==0)
cout<<"No";//Output "No" if No true prime number is found
else
{
for(i=0;i<ans;i++)
{
cout<<a[i];
if(i!=ans-1)//The last number is not followed by a comma
cout<<",";
}
}
return 0;
}