[ Programmers ] 최대공약수와 최소공배수 (Java)
1. Problem 📃
2. Constraint 🔗
3. Solution 🔑
최대공약수(GCD) / 최소공배수(LCM)
- 최대공약수는 구글에서 유클리드 호제법을 이용. (5번에 설명)
- 최소공배수는 두 수의 곱을 두 수의 최대공약수로 나누면 구할 수 있다.
4. Code 💻
class Solution {
public int gcd(int n, int m) {
if(m==0) {
return n;
}
else {
return gcd(m, n % m);
}
}
public int lcm(int n, int m) {
if(n % m == 0) {
return n;
}
else {
return n*m;
}
}
public int[] solution(int n, int m) {
int[] answer = new int[2];
int max = n > m ? n : m;
int min = n < m ? n : m;
answer[0] = gcd(max, min);
answer[1] = n*m / answer[0];
return answer;
}
}
5. Growth 🍄
class Solution {
public int gcd(int n, int m) {
if(m==0) {
return n;
}
else {
return gcd(m, n % m);
}
}
public int lcm(int n, int m) {
if(n % m == 0) {
return n;
}
else {
return n*m;
}
}
public int[] solution(int n, int m) {
int[] answer = new int[2];
int max = n > m ? n : m;
int min = n < m ? n : m;
answer[0] = gcd(max, min);
answer[1] = n*m / answer[0];
return answer;
}
}
< 최대공약수 구하는 공식 >
유클리드 호제법이란?
2개의 자연수 파라미터 a와 b (a > b)에 대해서 b!=0 이라면 a % b를 한 후 나온 나머지 값 r을 이용하여 b % r 을 계속 반복하여 나누는 수가 0이 될 때 파라미터. a값이 두 수의 최소 공배수가 된다.
public int gcd(int a, int b) {
if(b==0) {
return a;
}
else {
return gcd(b, a % b);
}
}
혹은
public int gcd(int a, int b) {
while(b != 0){
a = b;
b = a % b;
}
return a;
}
위와 같이 구할 수 있다.
< 최소공배수를 구하는 공식 >
두 수 a, b를 곱하여 두 수 a, b에 최대공약수를 나누어준다
public int lcm(int a, int b) {
//위에서 구한 최대공약수를 gcdNum으로 칠게용..❤️
int lcmNum = a * b / gcdNum;
return lcmNum;
}
Author And Source
이 문제에 관하여([ Programmers ] 최대공약수와 최소공배수 (Java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tpdlqj0514/Programmers-최대공약수와-최소공배수-Java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)