본문 바로가기

프로그래밍/알고리즘(자바)

최대공약수와 최소공배수 Level 1 #유클리드 호제법

최대공약수와 최소공배수 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)));
    }
}