问题 K: 神奇的素数II
题目描述
zls对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在chshru想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
输入
这里有许多组数据,每组包括两组数据a跟b。
输出
对每一组数据,按从小到大输出a,b之间所有满足条件的素数回文数(包括a跟b)每组数据之后空一行。
样例输入复制
5 500
样例输出复制
5
7
11
101
131
151
181
191
313
353
373
383
我写的代码只能通过一半的数据,最后显示的错误是
Expected | Yours
727 727
757 757
787 787
797 797
919 919
929 929
10301 10301
10501 10501
10601 10601
11311 11311
11411 11411
12421 1
最后一个莫名其妙输出的一,但是我用devc++测试了一下,又是和答案输出的一样,所以不知道是网站问题还是什么问题
附上dev测试图片
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define endl '\n'
const int maxn=1e8;
bool dp[maxn];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
stack<int>c;
ll a,b;
cin>>a>>b;
for(ll i=1; i<=b; i++)
dp[i]=true;
dp[0]=false;
dp[1]=false;
for(ll i=2; i*i<=b; i++) {
if(dp[i]) {
for(ll j=i*i; j<=b; j+=i) {
dp[j]=false;
}
}
}
for(ll i=a; i<=b; i++) {
if(dp[i]) {
ll num = 0;
ll j=i;
while(j!=0) {
num =num*10+j%10;
j/= 10;
}
if(i==num)cout<<i<<endl;
}
}
return 0;
}