Bon Voyage
Home
  • 분류 전체보기 (1)
    • 자료구조&알고리즘 (0)
    • 코딩 (0)
    • 자격증 공부 (0)
    • 취준 (0)
Home
  • 분류 전체보기 (1)
    • 자료구조&알고리즘 (0)
    • 코딩 (0)
    • 자격증 공부 (0)
    • 취준 (0)
블로그 내 검색

Bon Voyage

  • 코딩

    [BaekJoon/C++] 2609번 최대공약수와 최소공배수

    2023. 10. 17.

    by. 순늘봄

    2609 백준 - 최대공약수와 최소공배수

    문제 링크: https://www.acmicpc.net/problem/2609

     

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

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

    www.acmicpc.net

    문제: 

    두 개의 자연수를 입력받아 최대 공약수와 최소 공배수를 출력하는 프로그램을 작성하시오.

     

    접근 방법:

    이 문제는 두 수의 최대공약수를 먼저 구한 다음 최대공약수를 활용하여 최소공배수를 풀면 끝나는 간단한 문제다. 최소공배수는 자연수 a와 b를 곱해준 값에 최대공약수를 나눠주면 된다. 두 수 a와 b 중 a가 b보다 더 작다고 가정해보자. 그렇다면 최대공약수는 a와 같거나 작을 수 밖에 없다. 그렇기 때문에 a를 기준으로 1씩 빼주면서 a와 b를 해당 수로 나눴을 때 나머지가 0일 경우를 찾는다. 그 중 가장 큰 수가 최대공약수이다. 최대공약수를 구한 뒤, 위에서 말한 연산을 통하여 최소공배수를 구할 수 있다.   

    #include <iostream>
    
    
    using namespace std;
    
    int main() {
    	int a, b;
    	int max = 1;
    	int min = 1;
    
    
    	cin >> a >> b;
    
    	if (a > b) {
    		for (int i = b; i >= 1; i--) {
    			if (a % i == 0 && b % i == 0) {
    				max = i;
    				break;
    			}
    		}
    	}
    	else {
    		for (int i = a; i >= 1; i--) {
    			if (a % i == 0 && b % i == 0) {
    				max = i;
    				break;
    			}
    		}
    	}
    	min = a * b / max;
    	cout << max << '\n' << min << endl;
    	return 0;
    }

    '코딩' 카테고리의 다른 글

    [BaekJoon/C++] 1302번 베스트셀러  (2) 2023.10.21
    [BaekJoon/C++] 11650번 좌표 정렬하기  (1) 2023.10.17
    [BaekJoon/C++] 10814번 나이순 정렬  (0) 2023.10.14
    [BaekJoon/Python] 1065번 한수  (0) 2023.01.08
    [BaekJoon/Python] 2673 셀프 넘버 (파이썬)  (0) 2023.01.08

    댓글

    관련글

    • [BaekJoon/C++] 1302번 베스트셀러 2023.10.21
    • [BaekJoon/C++] 11650번 좌표 정렬하기 2023.10.17
    • [BaekJoon/C++] 10814번 나이순 정렬 2023.10.14
    • [BaekJoon/Python] 1065번 한수 2023.01.08
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
순늘봄

티스토리툴바