总是超时,7,9点TLE,求大佬帮忙看一下
查看原帖
总是超时,7,9点TLE,求大佬帮忙看一下
364375
XuAlbertEinstein2020楼主2020/10/9 20:56
#include <cstdio>
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
bool prime[100000005];
int isprime(int num){
    if(num==2||num==3)    return 1;
    if(num%6!=1&&num%6!=5)  return 0;
    int tmp=sqrt(num);
    for(int i=5;i<=tmp;i+=6){
        if(num%i==0||num%(i+2)==0)  return 0;
    }
    return 1 ;
}void a(int start,int endin){
    for(int i=start;i<=endin;i++){
        if(isprime(i)==1&&i<10)   cout<<i<<endl;
    }
}void b(int start,int endin){
    if(endin>=11&&start<=11)    cout<<"11"<<endl;
}void c(int start,int endin){
    for(int i=1;i<=9;i+=2){
        if(i==5)    continue;
        for(int j=0;j<=9;j++){
            int ans=i*(100+1)+j*10;
            if(ans>=start&&ans<=endin){
                if(isprime(ans)==1)    cout<<ans<<endl;
            }
        }
    }
}void e(int start,int endin){
    if(start>=100000) return;
    for(int i=1;i<=9;i+=2){
        if(i==5)    continue;
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                int ans=i*(10000+1)+j*(1000+10)+k*100;
                if(ans>=start&&ans<=endin){
                    if(isprime(ans)==1)    cout<<ans<<endl;
                }
            }
        }
    }
}void g(int start,int endin){
    if(start>=10000000) return;
    for(int i=1;i<=9;i+=2){
        if(i==5)    continue;
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                for(int l=0;l<=9;l++){
                    int ans=i*(1000000+1)+j*(100000+10)+k*(10000+100)+l*1000;
                    if(ans>=start&&ans<=endin){
                        if(isprime(ans)==1)    cout<<ans<<endl;
                    }
                }
            }
        }
    }
}void i(int start,int endin){
    if(start>=1000000000) return;
    for(int i=1;i<=9;i+=2){
        if(i==5)    continue;
        for(int j=0;j<=9;j++){
            for(int k=0;k<=9;k++){
                for(int l=0;l<=9;l++){
                    for(int m=0;m<=9;m++){
                        int ans=i*(100000000+1)+j*(10000000+10)+k*(1000000+100)+l*(100000+1000)+m*10000;
                        if(ans>=start&&ans<=endin){
                            if(isprime(ans)==1)    cout<<ans<<endl;
                        }
                    }
                }
            }
        }
    }
}
int main(){
    int start,endin;
    cin>>start>>endin;
    //int tstart=clock();
    if(endin>=6&&start<10)    a(start,endin);
    if(endin>=10&&start<100)   b(start,endin);
    if(endin>=100&&start<1000)  c(start,endin);
    if(endin>=10000&&start<100000)    e(start,endin);
    if(endin>=1000000&&start<10000000)  g(start,endin);
    if(endin>=100000000&&start<1000000000)    i(start,endin);
    //int tendin=clock();
    //cout<<endl<<(double)(tendin-tstart)/CLOCKS_PER_SEC<<" second";
    return 0;
}
2020/10/9 20:56
加载中...