2017年9月19日 星期二

[C_MM29-易] 最大質數問題(C++)

[C_MM29-易] 最大質數問題

  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main() {  
  5.     int num;         //輸入一個正整數
  6.     int result = 0;  //最大質數
  7.     bool p = true;   //是否是質數
  8.       
  9.     while(cin >> num)  //不知幾筆測資
  10.     {  
  11.         for(int i = (num-1); i > 0; i--)  
  12.          //從num開始往下遞減,自己不測試,如果本身是質數會輸出自己,例如97。
  13.         {  
  14.             for(int j = 1;j < num;j++)  //被除數,從1開始一個個被i除,看否為質數
  15.             {  
  16.                 if(i % j == 0 && i != j && i != 1 && j != 1 && i != num && j != num)
  17.                 //如果可以被除了自己和1以外的整除的話,就不是質數
  18.                 {  
  19.                     p = false;  
  20.                 }  
  21.             }  
  22.             if(p == true)  
  23.             //如果還是質數的話,輸出i,因為是從自己往下遞減,所以找到的第一個質數,
  24.             //就是最大的,之後就不用在做了
  25.             {  
  26.                 cout << i << endl;  
  27.                 break;  //結束迴圈
  28.             }  
  29.             result = 0;  
  30.             p = true;  
  31.         }  
  32.     }  
  33. }  


沒有留言:

張貼留言