코테) 유클리드 호제법 - 최대 공약수

손종일·2023년 10월 4일

유클리드 호제법 또는 유클리드 알고리즘은 2개의 자연수의 최대공약수를 구하는 알고리즘의 하나이다.

2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.

Java를 이용한 최대공약수 함수 구현

static long gcd_recur2(long a, long b) {
		long big = 0;
		long small = 0;
		if (a >= b) {
			big = a;
			small = b;
		} else {
			big = b;
			small = a;
		}
		if (small == 0) {
			return big;
		} else {
			return gcd_recur2(small, big%small);
		}
	}

최소공배수 함수 구현

static long lcm2(long a, long b) {
		return a * b / gcd_recur2(a, b);
	}
profile
아자아자 화이팅!

0개의 댓글