#9995: 這會超時嗎


ianrush (ianrush)

學校 : 國立成功大學
編號 : 50503
來源 : [140.116.187.240]
最後登入時間 :
2016-09-29 17:57:26
a007. 判斷質數 | From: [140.116.187.240] | 發表日期 : 2015-07-06 14:09

#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;
int main()
{
   int input[0];
   int row;
   while(cin >> input[0])
   {
      int a=0;
      for(int i=1; i < input[0]; i++)
      {
         if(input[0]%i == 0)
            a++;

         if(a >= 2)
         {
            cout << "非質數" << endl;
             break;
         }
      }
      if(a < 2)
         cout << "質數" << endl;

   }
   return 0;
}

 
#10006: Re:這會超時嗎


jenny0529 (jenny chou)

學校 : 國立臺灣大學
編號 : 50305
來源 : [204.52.215.71]
最後登入時間 :
2015-11-02 12:09:13
a007. 判斷質數 | From: [36.237.145.93] | 發表日期 : 2015-07-06 22:01

#include
#include
#include
#include
using namespace std;
int main()
{
   int input[0];
   int row;
   while(cin >> input[0])
   {
      int a=0;
      for(int i=1; i < input[0]; i++)
      {
         if(input[0]%i == 0)
            a++;

         if(a >= 2)
         {
            cout << "非質數" << endl;
             break;
         }
      }
      if(a < 2)
         cout << "質數" << endl;

   }
   return 0;
}


會的

 
#10007: Re:這會超時嗎


ianrush (ianrush)

學校 : 國立成功大學
編號 : 50503
來源 : [140.116.187.240]
最後登入時間 :
2016-09-29 17:57:26
a007. 判斷質數 | From: [140.116.132.140] | 發表日期 : 2015-07-06 22:22

#include
#include
#include
#include
using namespace std;
int main()
{
   int input[0];
   int row;
   while(cin >> input[0])
   {
      int a=0;
      for(int i=1; i < input[0]; i++)
      {
         if(input[0]%i == 0)
            a++;

         if(a >= 2)
         {
            cout << "非質數" << endl;
             break;
         }
      }
      if(a < 2)
         cout << "質數" << endl;

   }
   return 0;
}

那請我應該如何更正


 
#10008: Re:這會超時嗎


jenny0529 (jenny chou)

學校 : 國立臺灣大學
編號 : 50305
來源 : [204.52.215.71]
最後登入時間 :
2015-11-02 12:09:13
a007. 判斷質數 | From: [36.237.145.93] | 發表日期 : 2015-07-06 23:26

#include
#include
#include
#include
using namespace std;
int main()
{
   int input[0];
   int row;
   while(cin >> input[0])
   {
      int a=0;
      for(int i=1; i < input[0]; i++)
      {
         if(input[0]%i == 0)
            a++;

         if(a >= 2)
         {
            cout << "非質數" << endl;
             break;
         }
      }
      if(a < 2)
         cout << "質數" << endl;

   }
   return 0;
}

那請我應該如何更正


 

這篇是我的解法~可以參考看看
http://joujounote.blogspot.tw/2015/07/blog-post.html#more

 

你目前的方法是一個值一個值去判斷,如果數字很大,程式的速度會變很慢

所以你需要再判斷質數的那個步驟減少判斷的次數,像是你其實只要判斷到input的平方根以下的值會不會正除input就好,其他方法請參考以上網址

 

 

 
ZeroJudge Forum