計算機概論|HW10

題目敘述

請實作一程式,此程式可以要求使用者不斷地輸入一組資料,直到輸入的資料值中有一值不為正整數時結束程式,每一組資料的格式如下所示:

1
k d1 d2 d3

請由小到大輸出d1 d2 d3的前k個最小公倍數

範例輸入

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
3 29 51 13  
> 19227 38454 57681   
 
4 26 28 54  
> 9828 19656 29484 39312  

5 77 86 5 
> 33110 66220 99330 132440 165550  

0 1 2 3  

答題思路

參考答案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
 
using namespace std;
 
int gcd(int a, int b) {
    return (a == 0)? b: gcd(b % a, a);
}
 
int lcm(int a, int b) {
    return a / gcd(a, b) * b;
}
 
int main() {
    int k;
    
    while(cin >> k) {
        int a, b, c;
        
        cin >> a >> b >> c;
        
        int l = lcm(a, lcm(b, c));
        
        for(int i=1; i<=k; i++)
            cout << l*i << ' ';
        cout << endl;
    }
    
    return 0;
}
最後更新 Nov 16, 2022 12:00 +0800