網頁

2014年2月7日 星期五

UVA 10235 - Simply Emirp

 #include <iostream>
 #include <cstdio>
 #include <vector>
 #include <sstream>
 #include <algorithm>
 #include <bitset>
 #define MAX 1000000
 using namespace std;
 
 bitset<MAX+1> bs;
 
 void seive(){
   bs.set();
   bs[0]=false, bs[1]=false;
   
   for (long long int i=2; i<=bs.size(); ++i){
     if (bs[i]==true){
       for (long long int j=i*i; j<bs.size(); j+=i) 
         bs[j]=false;
     }
   }
   return; 
 }
 
 int main(int argc, char *argv[]){
   seive();
   
   int num, renum, tmp;
   while(cin>>num){
     tmp = num;
     for (renum=0; tmp; tmp/=10){
       renum = renum*10+(tmp%10);
     }
    if (bs[num]==true){
      if (bs[renum]==true && num!=renum){
        printf("%d is emirp.\n", num);
      } else {
        printf("%d is prime.\n", num);
      }
    } else {
      printf("%d is not prime.\n", num);
    }
  }
  return 0;
}

沒有留言:

張貼留言