개념정리/자료구조
유클리드 호제법 (최대공약수와 최소공배수)
김발자~
2023. 3. 29. 09:37
반응형
최대공약수와 최소공배수를 구하는 알고리즘이다
방법은 아래와 같다 (출처)
- 입력으로 두 수 m,n(m>n)이 들어온다.
- n이 0이라면, m을 출력하고 알고리즘을 종료한다.
- m이 n으로 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다.
- 그렇지 않으면, m을 n으로 나눈 나머지를 새롭게 m에 대입하고, m과 n을 바꾸고 3번으로 돌아온다.
이렇게 최대공약수를 구한다
1
2
3
4
5
|
public static int gcd(int p, int q)
{
if (q == 0) return p;
return gcd(q, p%q);
}
|
cs |
이를 자바 코드로 풀면 위와 같다(첨부한 링크에 그대로 있는 코드)
위의 코드가 최대공약수를 구하는 알고리즘이고,
최소공배수는 두 수를 곱한 뒤 최대공약수로 나누면 된다 즉, p * q / gcd
반응형