AcWing 1356. 回文质数
原题链接
简单
作者:
EXCUTER
,
2021-04-17 15:54:58
,
所有人可见
,
阅读 360
#include <bits/stdc++.h>
using namespace std;
int a, b;
bool sushu(int n)
{
int stop = n / 6 + 1, Tstop = sqrt(n) + 5;
if(n == 2 || n == 3 || n == 5 || n == 7 || n == 11)
return true;
if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n == 1)
return false;
for(int i = 1; i <= stop; i ++)
{
if(i * 6 >= Tstop) break;
if(n % (i * 6 + 1) == 0 || n % (i * 6 + 5) == 0)
return false;
}
return true;
} //判断素数
bool huiwen(int n)
{
int t = n;
int max_ = 0;
while(t > 0)
{
max_ = max_*10 + t%10;
t /= 10;
}
if(max_ == n)
return true;
return false;
} //判断回文数
int main()
{
cin.tie();
cin >> a >> b;
if(b > 1e7) b = 1e7; //偶数位数除了11都不是素数
for(int i = a; i <= b; i ++)
if(huiwen(i))
if(sushu(i)) //两个if位置不要更改否则会TL,你懂的
cout << i << endl;
return 0;
}