#14648: 為甚麼會 TLE (3s) ? 求解答


atiger1 (neko)

學校 : 義守大學
編號 : 80476
來源 : [42.74.108.22]
最後登入時間 :
2019-11-13 20:41:10
a121. 質數又來囉 | From: [1.175.4.72] | 發表日期 : 2018-07-27 16:15

#include <iostream>
#include <cstdlib>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
{
int t,sum;//t是計算整除次數 sum是計算有幾個質數
for(int i=a;i<=b;i++)
{
t=0;
for(int j=2;j<=i;j++)
{
if(i%j==0)//計算a被整除幾次
{
t++;
}
}
if(t==1)//質數只會被自身整除 所以只會被計算一次
{
sum++;//質數數量加1
}
}
cout << sum << endl;
sum=0;
}
return 0;
}

 
#14649: Re:為甚麼會 TLE (3s) ? 求解答


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.180.252]
最後登入時間 :
2024-05-17 15:04:41
a121. 質數又來囉 | From: [111.246.58.109] | 發表日期 : 2018-07-27 16:28

#include
#include
#include
#include
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
{
int t,sum;//t是計算整除次數 sum是計算有幾個質數
for(int i=a;i<=b;i++)
{
t=0;
for(int j=2;j<=i;j++)
{
if(i%j==0)//計算a被整除幾次
{
t++;
}
}
if(t==1)//質數只會被自身整除 所以只會被計算一次
{
sum++;//質數數量加1
}
}
cout << sum << endl;
sum=0;
}
return 0;
}

你可以這樣測試  99999000  100000000

看電腦跑多久

 

 
#14652: Re:為甚麼會 TLE (3s) ? 求解答


atiger1 (neko)

學校 : 義守大學
編號 : 80476
來源 : [42.74.108.22]
最後登入時間 :
2019-11-13 20:41:10
a121. 質數又來囉 | From: [1.175.24.218] | 發表日期 : 2018-07-28 11:12

#include
#include
#include
#include
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
{
int t,sum;//t是計算整除次數 sum是計算有幾個質數
for(int i=a;i<=b;i++)
{
t=0;
for(int j=2;j<=i;j++)
{
if(i%j==0)//計算a被整除幾次
{
t++;
}
}
if(t==1)//質數只會被自身整除 所以只會被計算一次
{
sum++;//質數數量加1
}
}
cout << sum << endl;
sum=0;
}
return 0;
}

你可以這樣測試  99999000  100000000

看電腦跑多久

 


要怎麼改才不會TLE 阿?

 
#14653: Re:為甚麼會 TLE (3s) ? 求解答


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [114.42.180.252]
最後登入時間 :
2024-05-17 15:04:41
a121. 質數又來囉 | From: [111.246.58.109] | 發表日期 : 2018-07-28 11:48

 

你要不要先試著建表來解。

 
#17910: Re:為甚麼會 TLE (3s) ? 求解答


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [211.23.154.252]
最後登入時間 :
2024-05-12 13:41:56
a121. 質數又來囉 | From: [36.224.134.164] | 發表日期 : 2019-06-01 21:25

#include
#include
#include
#include
using namespace std;
int main()
{
int a,b;
while(cin >> a >> b)
{
int t,sum;//t是計算整除次數 sum是計算有幾個質數
for(int i=a;i<=b;i++)
{
t=0;
for(int j=2;j<=i;j++)
{
if(i%j==0)//計算a被整除幾次
{
t++;
}
}
if(t==1)//質數只會被自身整除 所以只會被計算一次
{
sum++;//質數數量加1
}
}
cout << sum << endl;
sum=0;
}
return 0;
}

你可以這樣測試  99999000  100000000

看電腦跑多久

 

2ms


 
ZeroJudge Forum