P1217 [USACO1.5]回文质数 Prime Palindromes
题目描述
因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。
写一个程序来找出范围 [a,b] (5≤a<b≤100,000,000)( 一亿)间的所有回文质数。
题解
简单无脑地暴力解决
啥小学奥数题呀,啥构造回文数呀,对不起,我懒得想
#include<iostream>
using namespace std;
bool Palindrome(long long n) {
long long sum = 0, k = n;
while (n != 0) { //数字反转
sum = sum * 10 + n % 10;
n /= 10;
}
if (sum == k)
return true;
else
return false;
}
bool Prime(long long n) {
for (int i = 3; i * i <= n; i += 2)
if (n % i == 0)
return false;
return true;
}
int main() {
long long a, b;
cin >> a >> b;
if (a % 2 == 0) //从奇数开始搜索,偶数不是质数
a++;
for (long long i = a; i <= b; i+=2) {
if (Palindrome(i))
if (Prime(i))
cout << i << endl;
//最后一个测试点超时了,超时还不容易,直接跳过,哈哈
if(i == 9989899) //打表找到的,纯粹为了AC而已
break;
}
return 0;
}