ABOUT ME

Today
Yesterday
Total
  • 1934 : 최소공배수
    코딩문제/백준 2020. 7. 13. 00:56

    최소공배수 구하는 식을 생각하면 간단한 문제다. (a,b의 최대공약수 * 숫자a * 숫자b)

     

    최대공약수 구하는것은, a,b중 작은 수를 기준으로, 변수하나(num)를 만들어서 값을 넣고 반복문 돌리면서, 1씩 빼주면서, 두 수를 각각 num으로 나눈 나머지가 0이면 해당 num이 최대 공약수가 된다. 

     

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int max_num(int a, int b) { //최대공약수
    	int num = 0;
    	if (a > b) {
    		for (int i = b; i > 0; i--) {
    			if (a%i == 0 && b%i == 0) return num = i;
    		}
    	}
    	else {
    		for (int i = a; i > 0; i--) {
    			if (a%i == 0 && b%i == 0) return num = i;
    		}
    	}
    }
    
    int min_num(int a, int b, int c) { //최소공배수
    	//c : 최대공약수
    	return (a / c) * (b / c) * c;
    }
    
    int main() {
    	int a, b;
    	int n;
    	vector<int> tmp;
    	cin >> n;
    	for (int i = 0; i < n; i++) {
    		cin >> a >> b;
    		tmp.push_back(min_num(a,b,max_num(a,b)));
    	}
    	for (int i = 0; i < n; i++) {
    		cout << tmp[i] << endl;
    	}
    	return 0;
    }

    '코딩문제 > 백준' 카테고리의 다른 글

    1978 : 소수찾기  (0) 2020.07.13
    9613 : GCD 합  (0) 2020.07.13
    2798 블랙잭  (0) 2020.07.09
    2748 피보나치수  (0) 2020.07.09

    댓글

Designed by Tistory.