#13661: 請問TLE要怎麼解決 我是剛學還不到一個禮拜的新手XD


lawrence890815@gmail.com (智濬李)


#include<iostream>
#include<math.h>


using namespace std;
int main(){
int a,b,c,d;
int e;
int sum=0;
while(cin>>e>>a){
sum=0;
if(e==1){
e=2;
}
for(b=e;b<=a;b++){

d=0;
for(c=2;c<b;c++){
if(b%c==0){
d++;
a=a/c;
break;
}
}
if(d==0){
sum++;
}

}
cout<<sum;
}
}

#13665: Re:請問TLE要怎麼解決 我是剛學還不到一個禮拜的新手XD


justinO__o (夜貓)


#include
#include


using namespace std;
int main(){
int a,b,c,d;
int e;
int sum=0;
while(cin>>e>>a){
sum=0;
if(e==1){
e=2;
}
for(b=e;b<=a;b++){

d=0;
for(c=2;c<b;c++){
if(b%c==0){
d++;
a=a/c;
break;
}
}
if(d==0){
sum++;
}

}
cout<<sum;
}
}


b ~ 100000000

for i = a ~ b 總共 1000 次

所以總運算量是 1000 * 100000000

1s 大約可以跑 100000000

所以太多了

 

可以考慮 j 從 2 開始跑到 根號 i

一遇到 i % j == 0 就 ++count, break


話說好像跟上一篇一樣問題啊 0u0