天天看點

OpenJudge 區間内的真素數

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