2015年7月24日 星期五

C++進階研習:a007判斷質數

7/23 + 7/30  解 zerojudge.tw 中之 a007 判斷質數

#include <iostream>
#include <cstring>
#include <vector>
#include <cmath>
#define maxn 46340
using namespace std;

bool c[maxn+10];
vector <int> p;

// 以下 isp 為函式, 傳入 n 判斷是否為質數 
bool isp(int n)
{
  if(n<=maxn) return( !c[n] );
  int q = (int) sqrt(n);
  int k;
  for(k=0; k<p.size() && p[k]<=q ; ++k)
    if(n%p[k]==0) return false;
  return true;     
}

int main( )  // 主程式開始
{
  int i,j,k;
  memset(c,0,sizeof(c));    // 將 c 陣列全清為 0
  c[0]=c[1]=1;
  for(i=2;i<=maxn;++i)
  {
     if(c[i]==1) continue;   //非質數
     p.push_back(i);         // i是質數,放入 p 中 
     // 以下將是質數 i 的倍數 註記為非質數
     for(j=i+i; j<=maxn; j+=i)
       c[j]=1;                   
  }
  int n;
  while( cin >> n )   // 讀資料直到 EOF
  {
    if( isp(n) ) cout << "質數" << endl;
    else cout << "非質數" << endl; 
  }
  return 0;
}

Related Posts:

  • P2第一段進度P2A , P2B  資訊進度                                    &nbs… Read More
  • p1TAB 小考答案有 A卷、B卷 一、選擇題:(每題2分,共30題)60% 1.          ( D )由於電腦的主記憶體容量有限,作業系統必須協調主記憶體的分配與利用,以利各程式使用。以上說明作業系統的何項功能… Read More
  • P1段3進度範圍 課內習題及習作參考解 125頁 1.D 2.C 3.作業系統 , 130頁 1.B 2.B 3.acd , 131頁 1.C 2.A 3.多人多工 152頁 1.C 2.C 3.無法識別該硬體設備 ,153頁 1.C 2.B 3.B 4.C 5.C 6.C 7.D 8.A 9.D 10.C … Read More
  • To Z2A 2019vb_m6104模擬參考+104正式參考… Read More
  • P2段3進度範圍2019/6/6補 加考題範例 課內練習、習作解 342頁 1.B 2.C 3.網路電子地圖 345頁 1.D 2.B 350頁 1.A 2.C 3.AR 351頁 1.D 2.A 3.D 4.B 5.C 6.D 7.B 8.D 9.A 10.D 363頁 1.C 2.B 3.數位落差 368頁… Read More

0 意見:

張貼留言