본문 바로가기

Dev. Etc/Algorithm

[JAVA] 백준 알고리즘 2609번 문제풀이 (최대공약수와 최소공배수)

 

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

 

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

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

www.acmicpc.net

 

 

● 최대공약수와 최소공배수 문제 (2609번)

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

 

 

 

 

 

 

import java.util.Scanner;

//2609번
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		
		int b = sc.nextInt();
		int gcdValue = gcd(a, b);
		int lcmValue = lcm(a, b, gcdValue);
		System.out.println(gcdValue);
		System.out.println( lcmValue);

	}

	public static int gcd(int a, int b) {
		if (b > a) {
			int temp = a;
			a = b;
			b = temp;
		}
		if (b == 0) {
			return a;
		} else {
			return gcd(b, a % b);
		}
	}

	public static int lcm(int a, int b, int gcdValue) {
		int lcmValue = gcdValue * ((a / gcdValue) * (b / gcdValue));
		return lcmValue;
	}

}

최소공배수와 최대공약수를 구하기위해 유클리드 호제법을 사용해주었습니다.

↓ 소스풀이 ↓

이전 1934번 문제풀이와 비슷한 코드입니다.

lcm메소드만 하나더 만들어줘서 최소공배수를 구해주고,

Main메소드에서 호출해서 값을 출력해주었습니다.

 

https://choseongho93.tistory.com/146 1934번 문제풀이 참고

 

 

< 백준알고리즘 강의를 보고 참고하였습니다! >