Computer Science/Algorithms

[수학] - 최소공배수, 최대공약수 구하기

kimdozzi 2023. 9. 22. 22:19

최소 공배수

import java.util.*;
public class Main {
    private static int gcd(int a, int b) { 
        if (a == 0) return b;

        return gcd(b%a, a);
        
    }
    
    private static void lcm(int a, int b) {
        System.out.println(a / b);
    }

    public static void main(String[] args) {
        // 여기에 코드를 작성해주세요.
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        lcm(n*m, gcd(n,m));
    }
}

 

 

최대 공약수

import java.util.*;
public class Main {
    private static int gcd(int a, int b) { // 재귀를 이용한 코드
        if (a == 0) return b;

        return gcd(b%a, a);
        
    }
    private static int gcd_for(int n, int m) { // 반복문을 이용한 코드
        int gcd_num = 0;
        for(int i=1; i<=Math.min(n,m); i++) {
            if (n%i==0 && m%i==0) 
                gcd_num = i;
        }
        return gcd_num;
    }
    public static void main(String[] args) {
        // 여기에 코드를 작성해주세요.
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); 
        int m = sc.nextInt();
        // 1. 재귀 코드
        //System.out.println(gcd(n,m));

        // 2. 반복문 코드
        System.out.println(gcd_for(n,m));
    }
}