TLE3个还能咋优化

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

oSmile_ @ 2023-10-06 09:01:01


#include <iostream>
using namespace std;
int array[100];
int main(){
    std::ios::sync_with_stdio(false);
    int a,b;
    int renum2;
    cin >>a>>b;
    if(a==2){
        cout<<2<<endl;
    }
    int num=0;
    int temp=0;
    int temp2 = 1;
    if(a%2==0)a++;
    for(int i=a;i<=b;i++){
        if(i%2==0)continue;
        if(i<10){

            for(int j=2;j<i;j++){
                if(i%j==0){ 
                    break;
                }
                if(j==i-1){
                    cout <<i<<endl;
                } 
            }

        }else{

            temp =i;
            //将数据逐个存进数组中 
            while(true){
                array[num] = temp%10;
                if(temp <10)break;
                num++;
                temp = temp/10; 
            }
            //判断回文数 
            for(int j=0;j<=num/2;j++){
                if(array[j]!=array[num-j])break;
                if(j==num/2){

                        //判断质数 
                        for(int x=3;x<i;x++){
                            if(i%x==0)break;
                            if(x==i-1){
                                cout <<i<<endl;
                            }
                        }
                    }
                }
            }
            num =0;
            temp =0;
        }

    return 0;
}

by cjh20090318 @ 2023-10-06 09:24:04

为什么不能直接枚举一个数呢?而是用这种枚举数位的方法。


by oSmile_ @ 2023-10-06 10:38:36

枚举数位不是判断回文数吗


by liu2659414541 @ 2023-10-08 20:00:44

判断质数可以用for (int x = 2; x < sqrt(i) + 1; x++)


|