자료구조&알고리즘

[자료구조&알고리즘] 유클리드 호제법 최대/최소공배수 구하기 (PYTHON, JAVA)

고쩡이 2024. 4. 1. 15:58

가장 많이 알고 있는 유클리드 호제법

  • 2개의 자연수 최대공약수를 구하는 알고리즘의 하나
  • 두 정수가 n과 m이고, n을 m으로 나눈 나머지가 r일 때, n과 m의 최대공약수는 m과 r의 최대공약수와 같다.

최소공배수

파이썬

def gcd(n, m):
    if m == 0:
        return n
    else:
        return gcd(m, n % m)

자바

 public static int gcd(int n, int m)
 {
	if (m == 0) return n;
	return gcd(m, n % m);
 }

최대공배수

  • x*y를 최대공약수로 나눈 몫이 최소공배수

파이썬

def lcm(x,y):
    res = (x*y) // gcd(x,y)
    return res

자바

 public static int lcm(int x, int y)
 {
	return x*y / gcd(x,y);
 }