#7393: TLE應該是大家最主要的問題吧...能幫我看看怎麼解決嗎


ooxx6513 (fish)


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void){
    int a,b,i,j;
    while(scanf("%d %d",&a,&b)!=EOF){
        int m=0;
        if(a==1 || a==2){
            a++;
            m++;
            if(b==1)
                m--;
        }
        if(a%2==0)
            a++;
        for(i=a;i<=b;i=i+2){
            int temp=0;
            for(j=1;j<=sqrt(i);j++){
                if(i%j==0)
                    temp++;
            }
            if(temp==1){
                m++;
            }
        }
        printf("%d\n",m);
    }
}
#7395: Re:TLE應該是大家最主要的問題吧...能幫我看看怎麼解決嗎


akira0331 (小迷糊)


#include
#include
#include
int main(void){
    int a,b,i,j;
    while(scanf("%d %d",&a,&b)!=EOF){
        int m=0;
        if(a==1 || a==2){
            a++;
            m++;
            if(b==1)
                m--;
        }
        if(a%2==0)
            a++;
        for(i=a;i<=b;i=i+2){
            int temp=0;
            for(j=1;j<=sqrt(i);j++){
                if(i%j==0)
                    temp++;
            }
            if(temp==1){
                m++;
            }
        }
        printf("%d\n",m);
    }
}


給你幾建議,用2個for迴圈太耗時了,改用一個應該就能過

另外找質數的for迴圈裡,1 不是質數所以不用掃,另外偶數裡除了2是質數,其它的都不是

只做奇數是不是又更快了