최대공약수와 최소공배수 Level 1
# 유클리드 호제법
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
class TryHelloWorld {
public int[] gcdlcm(int a, int b) {
int a_ , b_ , temp;
//LCM = A*B / GCD
//GCD = A'* B'
//A = A'* GCD
//B = B'* GCD
if(a<b){
temp = a;
a = b;
b = temp;
}
a_ = a;
b_ = b;
while(b_!=0){
temp = a_;
a_ = b_;
b_ = temp%b_;
}
int gcd = a_;
int lcm = a*b/gcd;
int[] answer = {gcd, lcm};
return answer;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
TryHelloWorld c = new TryHelloWorld();
System.out.println(Arrays.toString(c.gcdlcm(84, 8)));
}
}
temp 써야 할 줄 알았는데 안 쓰고 하는 방법이 있었다.
import java.util.Arrays;
class TryHelloWorld {
public int[] gcdlcm(int a, int b) {
int[] answer = new int[2];
int ta = a, tb = b, r = 1;
if(a < b) {
a = tb;
b = ta;
}
while(r > 0) {
r = a % b;
a = b;
b = r;
}
answer[0] = a;
answer[1] = ta * tb/ a;
return answer;
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
TryHelloWorld c = new TryHelloWorld();
System.out.println(Arrays.toString(c.gcdlcm(3, 12)));
}
}
'프로그래밍 > 알고리즘(자바)' 카테고리의 다른 글
삼각형출력하기 Level 1 (0) | 2018.05.06 |
---|---|
수박수박수박수박수박수? Level 1 #join #replace #StringBuffer #append #String '+=' 연산 (0) | 2018.05.06 |
가운데 글자 가져오기 Level 1 #substring #length(),length,size() 차이 (0) | 2018.05.06 |
약수의 합 Level 1 (0) | 2018.05.06 |
최대값과 최소값 Level 1 (0) | 2018.05.06 |