2018年2月28日 星期三

[C_MM179-易] 最大公因數與最小公倍數(C++)

[C_MM179-易] 最大公因數與最小公倍數

問題描述 
輸入四個整數數字,求出此四個整數數字的最大公因數與最小公倍數。例如:
10 12 18 20 最大公因數為 2 ,最小公倍數為 180 。
12 18 24 36 最大公因數為 6 ,最小公倍數為 72 。
輸入格式
輸入格式為一行包含四個整數值,每個數字之間以一個空白隔開。
輸出格式
輸出值為最大公因數與最小公倍數,每個數字之間以一個空白隔開。
Example
Sample Input:Sample Output:
10 12 18 20
12 18 24 36
2 180
6 72

  1. #include <iostream>  
  2. #include <algorithm>  
  3. using namespace std;  
  4. int factor(intintintint); //最大公因數  
  5. int multiple(intintintint); //最小公倍數  
  6. int main() {  
  7.     // [C_MM179-易] 最大公因數與最小公倍數  
  8.     int n1, n2, n3, n4;  
  9.     cin >> n1 >> n2 >> n3 >> n4;  
  10.     cout << factor(n1, n2, n3, n4) << " " << multiple(n1, n2, n3, n4) << endl;  
  11.       
  12.     return 0;  
  13. }  
  14. int factor(int a, int b, int c, int d){  
  15.     int s[4] = {a, b, c, d};  
  16.     sort(s, s+4);  
  17.     for(int i = s[0];i > 0;i--)  
  18.     {  
  19.         if(a%i==0 && b%i==0 && c%i==0 && d%i==0)  
  20.         {  
  21.             return i;  
  22.             break;  
  23.         }  
  24.     }  
  25. }   
  26. int multiple(int a, int b, int c, int d){  
  27.     int s[4] = {a, b, c, d};  
  28.     sort(s, s+4);  
  29.     for(int i = s[3];;i++)  
  30.     {  
  31.         if(i%a==0 && i%b==0 && i%c==0 && i%d==0)  
  32.         {  
  33.             return i;  
  34.             break;  
  35.         }  
  36.     }  
  37.       
  38. }  

沒有留言:

張貼留言