总时间限制: 1000ms 内存限制: 65536kB
描述
找出正整数 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
注意输出的处理,没有符合题意的真素数要输出"No"。
#include <iostream>
#include <cstdio>
using namespace std;
int i,j,m,n,t[100005];
int main(){
t[1]=1;
for(i=2;i<=100000;i++){
if(t[i]==0)
for(j=2;j*i<=100000;j++)
t[j*i]=1;
}
scanf("%d%d",&m,&n);
int f=1;
for(i=m;i<=n;i++){
int temp=i,rev=0;
while(temp){
rev*=10;
rev+=temp%10;
temp/=10;
}
if(t[i]==0 && t[rev]==0){
if(f) f=0;
else printf(",");
printf("%d",i);
}
}
if(f) printf("No\n");
return 0;
}