티스토리 뷰

import java.util.Scanner;

public class Main {
	public static long gcd(long a, long b) { //유클리드 호제법
		long r = a%b;
		if(r==0) return b; //나머지가 0일 경우 최대공약수를 반환
		else return gcd(b, r); //몫과 나머지의 최대공약수를 찾으러 감
	}
	
	public static void main(String[] args) { 
		Scanner scan = new Scanner(System.in);
		long n = scan.nextLong();
		long m = scan.nextLong();
		long gcd = gcd(n, m); //최대공약수 구하기
		System.out.print(n*m/gcd); //최소공배수 * 최대공약수 = 두 수의 곱을 이용합니다.
	}
}

 

풀이 : 유클리드 호제법

 

1. 유클리드 호제법을 메서드로 구현합니다.

2. long type으로 두 정수를 입력받습니다.

3. 입력 받은 두 수로 최대공약수를 구합니다.

4. 최소 공배수 * 최대공약수 = 두 수의 곱 이므로, 최소 공배수는 = 두수의 곱 / 최대 공약수  입니다. 이를 출력하면 됩니다.

 

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

 

13241번: 최소공배수

정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다

www.acmicpc.net

 

'java > BAEKJOON' 카테고리의 다른 글

java 1059번 좋은 구간 (백준)  (0) 2023.04.16
java 1835번 카드 (백준)  (0) 2023.04.02
java 16562번 친구비 (백준)  (0) 2023.03.19
java 1034번 거짓말 (백준)  (1) 2023.03.19
java 16120번 PPAP (백준)  (0) 2023.03.18
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함