#3985: 使用 i*i < x 判斷仍 TLE


edisonshih (edison.shih.)

學校 : 國立臺北大學
編號 : 12513
來源 : [180.177.76.161]
最後登入時間 :
2012-05-14 05:02:57
a007. 判斷質數 | From: [180.177.77.78] | 發表日期 : 2010-07-13 20:19

#include <iostream>
using namespace std;

int main()
{
 bool break_flag = false;
 int i, x;
START:
 while(cin >> x){
  if(x%2==0 || x%3==0) {
   cout << "非質數" << endl;
   continue;
  }
  for(i=3; i*i<x; i+=2){
   if(x%i==0) {
    cout << "非質數" << endl;
    goto START;
   }
  }
  cout << "質數" << endl; }
 return 0;
}

請問是否仍有地方需改善??

這種方式仍一直在 TLE 狀態..

 
#3990: Re:使用 i*i < x 判斷仍 TLE


su_horng (su_horng)

學校 : 劍橋大學國王學院
編號 : 1089
來源 : [111.248.42.147]
最後登入時間 :
2014-12-13 21:15:21
a007. 判斷質數 | From: [61.217.33.35] | 發表日期 : 2010-07-14 11:32

i*i可能溢位變負的 
#4026: Re:使用 i*i < x 判斷仍 TLE


peng571 (^^)

學校 : 國立斗六高級中學
編號 : 11999
來源 : [118.170.199.52]
最後登入時間 :
2012-07-02 16:00:41
a007. 判斷質數 | From: [114.41.64.100] | 發表日期 : 2010-07-24 21:11

i*i可能溢位變負的

可是範圍不是給了2~2141483641


這樣用i*i<=n

也會溢位嗎??

 

我原本也是那樣寫

結果也是遇時

只好改成開根號的方法

發現速度差好多喔

為什麼呢?

 

 
ZeroJudge Forum