알고리즘 (최대공약수, 최수공배수)

2016. 10. 3. 16:36프로그래밍/자바

반응형

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다.



import java.util.Arrays;


public class TryHelloWorld {

public int aaa(int a, int b){

        int mod = a % b;

        if(a>b) {

        while(mod>0) {

        a = b;

        b = mod;

        mod = a % b;

        }

        } 

return b;

}

public int bbb(int a, int b){

int mod = a % b;

if(a%b == 0){

b = b*(a/b);

} else if(a%b != 0) {

int min = aaa(a,b);    // 최소공배수는 두 수(a,b)의 최대공약수로 나눈 몫과 같다

b = (a*b)/min;

}

return b;

}

    public int[] gcdlcm(int a, int b) {

        int[] answer = new int[2];

        if (a == b) {

        answer[0] = b;

        answer[1] = b;

        } else if (b > a) {

        int tmp = a;

        a = b;

        b = tmp;

        }

        answer[0] = aaa(a,b);      //최대공약수 구하기

        answer[1] = bbb(a,b);     //최소공배수 구하기

        return answer;

    }


    // 아래는 테스트로 출력해 보기 위한 코드입니다.

    public static void main(String[] args) {

        TryHelloWorld c = new TryHelloWorld();

        System.out.println(Arrays.toString(c.gcdlcm(40, 26)));

    }

}


반응형