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


atiger1 (neko)


#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)


#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)


#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)


 

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

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


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


#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