#4659: ★☆ 誰可以幫我看一下 我慢了一秒 幫我看一下吧


despair721 (x捷xo)

學校 : 彰化縣私立大慶高級商工職業學校
編號 : 11284
來源 : [59.126.221.192]
最後登入時間 :
2012-06-05 15:45:42
a007. 判斷質數 | From: [163.23.134.54] | 發表日期 : 2010-12-15 11:48

#include<iostream>  
using namespace std;
int main()  
{  
 int box,v;

    while(cin >> v)  
    {
  box = v/2;
  if( v < 6 )
  {
   box = box * 2;
  }
  for( int a = 2; a <= box; a++ )
  {
   if( v % a == 0 )
   {
    cout << "非質數" << endl;
    break;
   }
   else if( a == box )
   {
    cout << "質數" << endl;
    break;
   }
  }
 }
   
    return 0;  

 
#4663: Re:★☆ 誰可以幫我看一下 我慢了一秒 幫我看一下吧


chienweichih (Chien-Wei-Chih)

學校 : 國立臺灣海洋大學
編號 : 13146
來源 : [140.121.98.198]
最後登入時間 :
2013-12-14 14:15:41
a007. 判斷質數 | From: [140.121.217.155] | 發表日期 : 2010-12-15 23:43

box = v/2;

除以2還是要處理太多了

如果要處理最大值2147483647 for要跑十億次= =

開根號吧 ...最大只要處理四萬次~明顯快很多~

(找質數找到開根號就夠了)

 
#4666: Re:★☆ 誰可以幫我看一下 我慢了一秒 幫我看一下吧


despair721 (x捷xo)

學校 : 彰化縣私立大慶高級商工職業學校
編號 : 11284
來源 : [59.126.221.192]
最後登入時間 :
2012-06-05 15:45:42
a007. 判斷質數 | From: [163.23.134.54] | 發表日期 : 2010-12-16 11:15

#include  
using namespace std;
int main()  
{  
 int box,v;

    while(cin >> v)  
    {
  box = v/2;
  if( v < 6 )
  {
   box = box * 2;
  }
  for( int a = 2; a <= box; a++ )
  {
   if( v % a == 0 )
   {
    cout << "非質數" << endl;
    break;
   }
   else if( a == box )
   {
    cout << "質數" << endl;
    break;
   }
  }
 }
   
    return 0;  

 

我已經開根號了,可是還是慢了一秒耶~!

幫我看一下哪裡錯誤吧~!卸卸~!

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
 int v,c = 0;

 while( cin >> v )
 {
  cout << "sqrt(v) = " << sqrt(v) << endl;
  for( int a = 2; a <= sqrt(v); a++ )
  {
   cout << "a = " << a << endl;
   if( v % a == 0 )
   {
    cout << "非質數" << endl;
    break;
   }
   else if( a == int(sqrt(v)) )
   {
    cout << "質數" << endl;
   }
  }
 }

 return 0;
}

 
ZeroJudge Forum