2018年2月28日 星期三

[C_AR177-易] 列出介於(含)兩個自然數間的所有質數(C++)

[C_AR177-易] 列出介於(含)兩個自然數間的所有質數

Time Limit: 2 seconds
問題描述 :
針對某對自然數 ( 大於等於 2 且小於 10000) ,程式會由小至大輸出所有介於 ( 含 ) 此對自然數間的所有質數。
輸入說明 :
首先,程式要求輸入一個正整數 (<10) ,代表接下來要列出幾對自然數間的質數。
然後,輸入兩個相應對數的自然數a b(不超過10,000)。
※a<b<=10,000
例如,
2
7 18
20 22
表示有 2 對,依序是 7~18 及 20~22 。
輸出說明 :
由小到大, 輸出找到的質數,並且每個質數間以一個「 , 」隔開,每輸出完一組質數便換行。若某對自然數間沒有質數,就輸出「 none 」並換行。
例如針對上述輸入,則輸出 :
7,11,13,17
none
表示介於 7 與 18 的質數由小至大分別是 7,11,13 與 17 。然而沒有質數介於 20 與 22 。
範例 :

輸入範例輸出範例
2
7 18
20 22
7,11,13,17
none


  1. #include <iostream>  
  2. using namespace std;  
  3. int PRIME(intintintint*);  
  4. int main() {  
  5.     // [C_AR177-易] 列出介於(含)兩個自然數間的所有質數  
  6.     int n, a, b;  
  7.     cin >> n;  
  8.   
  9.     for(int i = 0;i < n;i++)  
  10.     {  
  11.           
  12.         cin >> a >> b;  
  13.         int count = 0;  
  14.         int prime[10000];  
  15.         PRIME(a, b, count, prime);  
  16.     }  
  17.     return 0;  
  18. }  
  19. int PRIME(int x, int y, int r, int *p){  
  20.     for(int i = x;i <= y;i++)  
  21.     {  
  22.         int c = 0;  
  23.         for(int j = 1;j <= i;j++)  
  24.         {  
  25.             if(i % j == 0)  
  26.             {  
  27.                 c++;  
  28.             }  
  29.         }  
  30.         if(c == 2)  
  31.         {  
  32.             p[r] = i;  
  33.             r++;  
  34.         }  
  35.     }  
  36.     if(r == 0)  
  37.     {  
  38.         cout << "none" << endl;  
  39.     }  
  40.     else  
  41.     {  
  42.         for(int i = 0;i < r;i++)  
  43.         {  
  44.             if(i == 0)  
  45.             {  
  46.                 cout << p[i];  
  47.             }  
  48.             else  
  49.             {  
  50.                 cout << "," << p[i];  
  51.             }  
  52.         }  
  53.         cout << endl;  
  54.     }  
  55. }  

沒有留言:

張貼留言