Description:
判断一个数是否为对称且不大于五位数的素数。
Input:
输入数据含有不多于50个的正整数(0<n<2^32)。
Output:
对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。
Sample Input:
11 101 272
Sample Output:
Yes
Yes
No
Note:
本题由旧版NOJ导入,来源:ZJUT
#include <iostream>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <climits>
#include <stdio.h>
#include <iomanip>
#include <math.h>
#include <list>
#include <queue>
#include <tuple>
#include <stack>
#include <string.h>
using namespace std;
bool isPrime(unsigned long long number) {
if(number == 1)
return false;
for (unsigned long long i = 2; i * i <= number; i++)
if (number % i == 0)
return false;
return true;
}
int main(void)
{
unsigned long long num;
while(cin >> num)
{
string tmp = to_string(num);
string copy = tmp;
reverse(tmp.begin(), tmp.end());
if(num <= 99999 && copy == tmp)
{
if(isPrime(num))
{
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
else{
cout << "No" << endl;
}
}
return 0;
}