【題目描述】
找出正整數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<cstdio>
#include<cmath>
using namespace std;
bool c(int x);
int b(int n);
int a[100000],m,n,i,k;
bool flag=false;
int main()
{
scanf("%d%d",&m,&n);
for(i=m; i<=n; i++)
if(c(i)&&c(b(i)))
{
k++;
a[k]=i;
flag=true;
}
if(flag)
{
for(i=1; i<k; i++)
printf("%d,",a[i]);
printf("%d",a[k]);
}
else
printf("No\n");
return 0;
}
bool c(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 b(int n)
{
int sum=0;
while(n>0)
{
sum=sum*10+n%10;
n/=10;
}
return sum;
}