描述
找出正整数 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
注意:在判断是否为素数时要首先判断该数是不是大于1。
#include <bits/stdc++.h>
using namespace std;
bool isprime(int a){
if(a==1) return false;
for(int i=2;i<=sqrt(a);i++){
if(a%i==0) return false;
}
return true;
}
int rev(int a){
int temp=0;
while(a>0){
temp=temp*10+a%10;
a/=10;
}
return temp;
}
int main(){
int m,n,num[100005];
cin>>m>>n;
int k=0;
for(int i=m;i<=n;i++){
if(isprime(i)){
int temp=rev(i);
if(isprime(temp)){
num[k++]=i;
}
}
}
if(k==0){
cout << "No" <<endl;
return 0;
}
for(int i=0;i<k-1;i++){
cout<<num[i]<<",";
}
cout << num[k-1]<<endl;
return 0;
}