#7904: TLE的問題(已GOOGLE過解答)


panda55520 (熊貓貓)

學校 : 不指定學校
編號 : 33403
來源 : [59.105.29.116]
最後登入時間 :
2013-07-15 20:09:05
a007. 判斷質數 | From: [221.169.231.236] | 發表日期 : 2013-06-30 01:02

已GOOGLE過其他網誌的正解
嘗試之後仍然卡在TLE(2S)
不好意思
請問該如何調整程式碼??
謝謝好心的大大回應 
 
#include <iostream>
#include <math.h>
using namespace std; 
int main()
{
 int a,i;
 while(cin>>a)
 {
  int ct=0;
  for(i=2 ; i<= (sqrt(a)); i++)
  {
   if((a%i)==0)
   {
    ct++;
    break;
   }
  }
  if(ct==0)
  {
   cout<<"質數"<<endl;
  }
  else
  {
   cout<<"非質數"<<endl;
  }
 }
 return 0;
}
 
#7906: Re:TLE的問題(已GOOGLE過解答)


panda55520 (熊貓貓)

學校 : 不指定學校
編號 : 33403
來源 : [59.105.29.116]
最後登入時間 :
2013-07-15 20:09:05
a007. 判斷質數 | From: [221.169.231.236] | 發表日期 : 2013-06-30 12:53

我又再調整嘗試了一下...
依然遇到TLE(2S)的問題:(
想請問各位好心的大大
該怎麼在修改才能減少迴圈次數呢?
謝謝:D

#include<iostream>

using namespace std;

 

int main()

{

    int a;

    bool b;

    while(cin>>a)

    {

        b=true;

        if(a>=2147483647)

        {

         break;

        }

        else if(a==2)

        {

            b=true;

            continue;            

        }

        else if(a%2==0)

        {

            b=false;

            continue;

        }

        else

        {

         for(int i=3;i*i<=a;i+=2)

         {

            if(a%i==0)

            {

                b=false;

                break;

            }

         }

        }

 

        if(b==true)

        {

         cout<<"質數"<<endl;

        }

        else

        {

         cout<<"非質數"<<endl;

        }

       }    

 return 0;

 
ZeroJudge Forum