總時間限制: 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;
}