P1217 [USACO1.5]回文质数 Prime Palindromes
P1217题目描述
介绍一种判断回文的方法。
取x的右半边与x的左半边比较,如果是位数为偶,直接比较;如果位数为奇,右半边除以10再比较。代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int isPrime(int n) {
if (n == 1)
return 0;
if (n % 2 == 0)
return 0;
else {
int i;
for (i = 2; i <= sqrt(n); i++) {
if (n % i == 0)
return 0;
}
return 1;
}
}
bool isPalindrome(int x) {
int right=0;
while (x > right) {
right = right * 10 + x % 10;
x /= 10;
}
if (x == right || x == (right / 10))
return true;
return false;
}
int main()
{
int a, b;
cin >> a >> b; //读入两个数
for (int i = a; i <= b; i++) {
if (i == 9989900) //根据测试用例的优化...
break;
if (isPalindrome(i) && isPrime(i))//否则判断是否回文和素数
cout << i << endl;//输出每个回文质数
}
return 0;
}