30分,TLE求助

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

wyqwyqwyqwyq @ 2024-01-06 14:18:12

代码如下:

#include<iostream>
using namespace std;
bool zs(long long n){
    if(n==0 || n==1){
        return 0;
    }
    for(int i=2;i<n;i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
bool hw(long long n){
    long long s=n;
    long long x=0;
    while(s!=0){
        x=x*10+s%10;
        s/=10;
    }
    if(x==n){
        return 1;
    }
    else{
        return 0;
    }
}
int main(){
    long long a,b;
    cin>>a>>b;
    for(long long i=a;i<=b;i++){
        if(zs(i)==1 && hw(i)==1){
            if(){
                cout<<i<<endl;
            }   
        }
    }
    return 0;
}

by summer_000 @ 2024-01-08 11:08:10

超时间复杂度了, 素数判断可以只判断到该数的平方根。
看题目提示,用枚举更快。
素数判断可以这么写:

bool isprime(int i)
{
    bool flag = true;
    if (i == 1) { return false; }
    else
    {
        for (int j = 2; j <= sqrt(i); j++)
        {
            if (i % j == 0) { flag = false; break; }
            else { continue; }
        }
        if (flag || i == 2 || i == 3) { return true; }
        else { return false; }
    }
}

|