Greeper @ 2024-07-17 12:29:32
#include<bits/stdc++.h>
using namespace std;
bool t(int n)
{
int n_=0;
int x=n;
while(x)
{
n_*=10;
n_+=x%10;
x/=10;
}
return (n==n_);
}
bool z(int a)
{
for(int i=2;i<a;i++)
{
if(a%i==0)
{
return 0;
}
}
return 1;
}
int main()
{
int l,r;
cin>>l>>r;
for(int i=l;i<=r;i++)
{
if(t(i))
{
if(z(i))
{
cout<<i<<endl;
}
}
}
return 0;
}
by Program_A2 @ 2024-07-18 13:22:42
@Greeper 我也是,3个TLE,你可以暴力过,我就是这样的,过了(注:数组每个都赋值,建议另写一个程序得到题目范围里所有的回文质数,每个之间一个空格,然后全选,放入数组)
by Program_A2 @ 2024-07-18 13:25:04
这题正常思路一般很难过的,我们这群菜鸟只能打表暴力过
by luoguwoshinibaba @ 2024-07-20 10:48:56
@Greeper 首先,两个if可以分开;其次,输入输出改一下。再多加点特判速度快一些(偶数不可能有回文质数)
by fjj54188 @ 2024-07-20 10:50:58
#include<bits/stdc++.h>
using namespace std;
int f(int n){
int i,k=sqrt(n);
if(n<2){
return 0;
}
else if(n==2){
return 1;
}
else{
for(i=2;i<=k;i++){
if(n%i==0)
return 0;
}
}
return 1;
}
int h(int n){
int i,j,cnt=0,t=n,f=1;
while(t){
cnt++;
t/=10;
}
t=n;
if(cnt==1)
return 1;
int a[10005];
for(i=0;i<cnt;i++){
a[i]=t%10;
t/=10;
}
for(i=0;i<cnt;i++){
j=cnt-i-1;
if(a[i]!=a[j])
f=0;
}
return f;
}
int main(){
long long a,b,i;
cin>>a>>b;
for(i=a;i<=b;i++){
if(i%2!=0){
if(h(i)){
if(f(i)){
cout<<i<<endl;
}
}
}
if(i==9989899)
break;
}
return 0;
}