BOJ 2609. 최대공약수와 최소공배수

1 minute read

BOJ 2609. 최대공약수와 최소공배수

image

풀이

최대 공약수를 구하는 방법 1

int getGCP(int a, int b) {
    int r = 1;
    for (int i = 2; i < Math.min(a, b); i++) {
        if (a % i == 0 && b % i == 0) {
            r = i;
        }
    }
    return r;
}

2부터 a와 b 중 작은 값 까지
a와 b 모두 나머지가 0인 수를 찾기

최대 공약수를 구하는 방법 2

유클리드 호제법을 재귀 함수를 통해 구현

int getGCP(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return getGCP(b, a % b);
    }
}

image
image
image

최대 공약수를 구하는 방법 3

유클리드 호제법 while문 사용하여 구현

  int getGCP(int a, int b) {
        while (b != 0) {
            int r = a % b;
            a = b;
            b = r;
        }
        return a;
    }

java

import java.io.*;
import java.util.Scanner;

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

        int gcp = getGCP(a, b);
        int lcm = getLCM(a, b, gcp);

        System.out.println(gcp);
        System.out.println(lcm);
        sc.close();
    }

    static int getGCP(int a, int b) {
        int r = 1;
        for (int i = 2; i < Math.min(a, b); i++) {
            if (a % i == 0 && b % i == 0) {
                r = i;
            }
        }
        return r;
    }

    static int getLCM(int a, int b, int gcp) {
        return a * b / gcp;
    }
}

kotlin

import java.util.*

fun getGCP(a: Int, b: Int): Int = if (b == 0) a else getGCP(b, a % b)
fun getLCM(a: Int, b: Int): Int = a * b / getGCP(a, b)

fun main() {
    val sc = Scanner(System.`in`)
    val a = sc.nextInt()
    val b = sc.nextInt()

    val gcp = getGCP(a, b)
    val lcm = getLCM(a, b)

    println(gcp)
    println(lcm)
}

소스풀이

github.com/beomjo/algorithm-study/blob/main/BOJ/java/2609.java github.com/beomjo/algorithm-study/blob/main/BOJ/kotlin/2609.kt