2018年2月28日 星期三

[C_MM167-易] 質數輸出(C++)

[C_MM167-易] 質數輸出

質數輸出
問題描述 
質數是一種只能由數字 1 或本身能除盡的數字。如果需要輸出介於 N 到 M (含 N 與 M) 範圍所有的質數,最簡單的作法是利用雙迴圈。外迴圈逐一條列 N 至 M 每個數字,內迴圈則檢視被條列的數字是否為質數。一個數字 x 如果為質數,表示由 2 至 x-1 所有的數字皆無法除盡 x 。請寫一個程式,輸出介於任兩數字間的所有質數。
輸入說明 
每一行輸入兩個數字由單一空格分隔,分別表示題意的 N 與 M ( N, M>=0 且 N≤M≤2014 )。如果 N 與 M 皆為數字 0 則結束程式執行。
輸出說明 
輸出介於 N 與 M (含 N 與 M )範圍的所有質數,每輸出一個數字後方留單一空格。
範例 :

輸入範例輸出範例
2 10
13 18
0 0
2 3 5 7
13 17

  1. #include <iostream>  
  2. using namespace std;  
  3. int PRIME(intintintint*);   
  4. int main() {  
  5.     // [C_MM167-易] 質數輸出  
  6.     while(true)  
  7.     {  
  8.         int x, y;  
  9.         cin >> x >> y;  
  10.         int count = 0;    
  11.         int prime[10000];    
  12.         if(x != 0 && y != 0)  
  13.         {  
  14.             PRIME(x, y, count, prime);  
  15.         }  
  16.         else  
  17.         {  
  18.             break;  
  19.         }  
  20.     }  
  21.     return 0;  
  22. }  
  23. int PRIME(int x, int y, int r, int *p){    
  24.      for(int i = x;i <= y;i++)    
  25.      {    
  26.           int c = 0;    
  27.           for(int j = 1;j <= i;j++)    
  28.           {    
  29.                if(i % j == 0)    
  30.                {    
  31.                 c++;    
  32.             }    
  33.         }    
  34.         if(c == 2)    
  35.         {    
  36.             p[r] = i;    
  37.             r++;    
  38.         }    
  39.      }    
  40.          
  41.      if(r != 0)  
  42.      {    
  43.         for(int i = 0;i < r;i++)    
  44.         {    
  45.             cout << p[i] << " ";    
  46.         }    
  47.         cout << endl;    
  48.     }    
  49. }  

沒有留言:

張貼留言