본문 바로가기

Algorithm

최소공배수와 최대공약수

최대공약수를 푸는 방법에는 유클리드 호제법이 있다.

 

유클리드 호제법  

 

a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다 - <나무위키-유클리드호제법>

 

유클리드 호제법 코드

 

static int gcd(int x, int y){
   if(y==0)
      return x;
   else{
      return gcd(y, x%y);
   } 
}

이렇게 재귀적인 코드를 통해 최대공약수를 쉽게 구할 수 있다 

 

 

최소공배수 구하기 

 

최소공배수를 구하는 방법은 매우 쉽다. 두 수의 곱에 최대공약수를 나눠주면 되기 때문이다 

 

 

최소공배수 코드 

 

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

 

 

 

'Algorithm' 카테고리의 다른 글

Heap  (0) 2022.09.13
Greedy  (0) 2022.06.21
스택으로 재귀함수를 비재귀적으로 구현하기  (0) 2022.06.18
재귀 알고리즘  (0) 2022.06.18
큐(Queue)  (0) 2022.06.08