今天來解YKL28(UVA10235):Simply Emirp
假設一個數是 17
17 跟倒過來的數 71 都是質數(Prime)的話,那就是 emirp
如果只有 17 是 Prime 的話,那就是輸出 is prime
上面都者都不是的話,輸出 not prime
從3開始到n開更號,一個個比是不是質數
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n){
if(n <= 1)return false;
if(n == 2)return true;
if(n % 2 == 0)return false;
for(int i=3;i<=sqrt(n);i+=2){
if(n % i ==0)return false;
}
return true;
}
int reverse(int n){
int reversed =0;
while(n > 0){
reversed = reversed * 10 + n % 10;
n/=10;
}
return reversed;
}
int main(){
int n;
while(cin >> n){
if(!isPrime(n)){
cout << n << " is not prime." << endl;
}else{
int reversed = reverse(n);
if(reversed != n && isPrime(reversed))cout << n << " is emirp." << endl;
else cout << n << " is prime." << endl;
}
}
return 0;
}