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


edisonshih (edison.shih.)


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


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


peng571 (^^)


i*i可能溢位變負的

可是範圍不是給了2~2141483641


這樣用i*i<=n

也會溢位嗎??

 

我原本也是那樣寫

結果也是遇時

只好改成開根號的方法

發現速度差好多喔

為什麼呢?