algorithm
유클리드 호제법
it's woo
2021. 7. 23. 02:47
유클리드 호제법은 2개의 자연수의 최대공약수를 구하는 알고리즘이다.
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
유클리드 호제법 - 위키백과, 우리 모두의 백과사전
유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를
ko.wikipedia.org
24와 18의 최대 공약수를 구해보자
큰수를 작은수로 나누어 나머지를 구한다.
24=18*1+6
45와 38의 최대 공약수는 38과 7의 최대 공약수와 같다. 이성질을 재귀적으로 이용한다.
위 과정을 반복하여 나머지가 0이 될때 나누는 수가 최대공약수이다.
18=6*3
따라서 6이 최대공약수임을 알 수 있다.
코드
import java.util.Scanner;
public class Hello {
static int gcd(int p,int q) {
if (q==0)return p;
return gcd(q,p%q);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a= scanner.nextInt();
int b= scanner.nextInt();
int min=Math.min(a, b);
int max=Math.max(a, b);
int ggcd= gcd(max,min);
System.out.println(ggcd);
}
}
최소공배수
최소공배수는 두 수를 곱하고 최대공약수로 나누어 주면 된다.