티스토리 뷰

https://www.acmicpc.net/problem/2609

 

2609번: 최대공약수와 최소공배수

첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다.

www.acmicpc.net


#include <iostream>

using namespace std;

void swap(int *a, int *b) {
    if(*a > *b) {
        int tmp = *a;
        *a = *b;
        *b = tmp;
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int a, b;
    cin >> a >> b;

    swap(&a, &b);

    int divide = 2;
    int gcd = 1, lcm = 1; // 최대공약수, 최소공배수
    while(a >= divide) {
        if(a % divide == 0 && b % divide == 0) {
            a /= divide; b /= divide;
            gcd *= divide;
        } else {
            divide++;
        }
    }
    lcm *= a; lcm *= b;
    lcm *= gcd;

    cout << gcd << "\n" << lcm;
}
Total
Today
Yesterday
최근에 올라온 글
«   2024/11   »
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 30