백준 2609 자바(최대공약수)

정호윤·2023년 3월 7일

자바

목록 보기
17/46

최대공약수와 최소공배수를 구하는 문제이다.

최대공약수는 a를 b로 나머지 연산하고,나온 나머지를 다시 b에 나머지 연산한다.그걸 다시 a에 나머지 연산하고....이 과정을 반복하다 나머지가 0이 나올시 0이 나오게한 나머지 연산 숫자가 최대공약수이다.

그리고 a와 b를 곱한 수를 최대공약수로 나눈 몫이 최소공배수이다.

이걸 코드로 구현하면 이렇다.

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        int big  = Big( a, b);
        int small = (a*b)/big;
        System.out.println(big);
        System.out.println(small);
    }
    public static int Big(int a,int b){
        int tmp;
        while(b!=0){
            tmp=b;
            b=a%b;
            a=tmp;
        }
        return a;
    }
}

int tmp;
while(b!=0){
tmp=b;
b=a%b;
a=tmp;
}
return a;
이 부분 코드가 좀 헷갈린다.값을 저장할 저장소 tmp를 만든다.그 후 b값을 tmp에 저장한다.그 후 b에는 a%b 나머지를 저장한다.그 후 a에는 tmp에 저장한 b의 값을 저장한다.

이걸 반복하면 a,b값을 tmp에 계속해서 유지하면서 나머지 값만 업데이트 할수 있다.

profile
개발자로 취직을 희망합니다.

0개의 댓글