#8489: 請問有人可以給我點提示嗎??


yatun (MiGo)

學校 : 不指定學校
編號 : 38080
來源 : [60.250.30.118]
最後登入時間 :
2021-12-29 17:19:55
a007. 判斷質數 | From: [111.185.78.181] | 發表日期 : 2013-12-28 21:48

試了很多還是一直2s...請問有人可以給我點提示嗎??謝謝

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
     int x;
     do {
         cin >> x;

         int a = sqrt(x);
         bool prime[a];
         int b = 0;

         for (int i = 0; i < a + 1; i++)
             prime[i] = true;
         prime[0] = prime[1] = false;
         for (int i = 2; i < a + 1; i++) {
             if (prime[i]) {
                 for (int j = i + i; j < a + 1; j += i)
                     prime[j] = false;
                 if (x % i == 0) { b = 1; break; }
             }
         }

         (b == 0) ? cout << "質數\n" : cout << "非質數\n";
     } while (x >= 2 && x <= 2147483647);

     return 0;
}

 
#8513: Re:請問有人可以給我點提示嗎??


yatun (MiGo)

學校 : 不指定學校
編號 : 38080
來源 : [60.250.30.118]
最後登入時間 :
2021-12-29 17:19:55
a007. 判斷質數 | From: [111.185.78.181] | 發表日期 : 2014-01-05 07:28

再請問...

除了用Miller-Rabin 外, 還有其它方式可解嗎??

 
ZeroJudge Forum