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
풀이 과정
- 유클리드 호제법으로 풀이
유클리드 호제법
유클리드 호제법 (개념 이해하기) | 모듈로 연산 | Khan Academy
- 두 개의 자연수가 주어졌을 때 최대공약수(GCD)를 구하는 알고리즘
- 재귀적인 방법을 활용하여 동작
- 두 수를 서로 나누고 나머지를 계산하여 나머지가 0이 될 때까지 반복
- 두 정수 a 와 b의 최대 공약수 GCD(a,b)를 찾을 때, b가 0이 될 때까지 a를 b로 나눈 나머지를 계산
- 나머지가 0이 되면 그때의 b가 GCD(a,b)
최대 공약수 GCD(Greatest Common Divisior)
- 두 자연수의 공통된 약수 중 가장 큰 수
최소 공배수 LCM(Least Common Multiple)
- 두 자연수의 공통된 배수 중 가장 작은 수
- 최소 공배수 = 두 자연수의 곱 / 최대 공약수
- A와 B의 최대 공약수는 A를 B로 나눈 나머지가 r 일 때 B와 r의 최대 공약수와 같다
//최대공약수
public static int gcd(int a, int b)
{
if(b==0) {
return a;
}
else
{
return gcd(b,a%b);
}
}
//최소공배수
public static int lcm(int a, int b)
{
int gcd = gcd(a,b);
return (a*b) /gcd;
}
정답
import java.util.Scanner;
public class Main {
//최대 공약수
public static long gcd(long a, long b)
{
if(b==0)
{
return a;
}
else
{
return gcd(b,a%b);
}
}
//최소 공배수
public static long lcm(long a, long b)
{
long gcd = gcd(a,b);
return (a*b)/gcd;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
System.out.println(lcm(a,b));
}
}
'Java > 백준' 카테고리의 다른 글
[JAVA] 백준 2485 가로수 (1) | 2024.02.10 |
---|---|
[JAVA] 백준 1735 분수합 (1) | 2024.02.10 |
[JAVA] 백준 12789 도키도키 간식드리미 (1) | 2024.02.10 |
[JAVA] 백준 4949 균형잡힌 세상 (2) | 2024.02.08 |
[JAVA] 백준 9012 괄호 (0) | 2024.02.08 |