求助0分 回答者必关

P1217 [USACO1.5] 回文质数 Prime Palindromes

xiongty2024 @ 2023-10-04 17:50:06

#include<bits/stdc++.h>
using namespace std;
int n,m,wei1,t,s,a[10],b[10];
bool pd(int x){
    if(x<=1)
        return false;
    for(int i=2;i*i<=x;i++)
        if(x%i==0)
            return false;
    return true;
}
int main()
{
    int i,j;
    cin>>n>>m;
    for(i=n;i<=m;i++){
        if(pd(i)){
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            wei1=0;
            t=i;
            while(t>0){
                a[++wei1]=t%10;
                t/=10;
            }
            for(i=wei1;i>=1;i--)
                b[wei1-i+1]=a[i];
            for(i=1;i<=wei1;i++)
                s=s*10+b[i];
            if(i==s){
                cout<<i<<endl;
            }
        }
    }
    return 0;   
} 

TLE,不知道怎么优化


by XuYueming @ 2023-10-04 17:59:48

你内层循环为什么要对 i 操作呢


by xiongty2024 @ 2023-10-04 18:41:30

#include<bits/stdc++.h>
using namespace std;
int n,m,wei1,t,s,a[10],b[10];
bool pd(int x){
    if(x<=1)
        return false;
    for(int i=2;i*i<=x;i++)
        if(x%i==0)
            return false;
    return true;
}
int main()
{
    int i,j;
    cin>>n>>m;
    for(i=n;i<=m;i++){
        if(pd(i)){
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            wei1=0;
            t=i;
            while(t>0){
                a[++wei1]=t%10;
                t/=10;
            }
            for(j=wei1;j>=1;j--)
                b[wei1-j+1]=a[j];
            for(j=1;j<=wei1;j++)
                s=s*10+b[j];
            if(i==s){
                cout<<i<<endl;
            }
        }
    }
    return 0;   
} 

11分,有几个WA


|