package _6;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		int num1, num2;
		Scanner sc = new Scanner(System.in);
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		System.out.println(gcd(num1, num2));
		
	}
	
	public static int gcd(int num1, int num2) {

		int r = 0;
		
		r = num1 % num2;
		if(r == 0) {
			return num2;
		}
		
		return gcd(num2, r);
		
		/*
		while(true) {
			r = num1 % num2;
			if(r == 0) {
				return num2;
			}
			num1 = num2;
			num2 = r;
		}
		*/
	}
	
}

유클리드 호제법(-互除法, Euclidean algorithm) 또는 유클리드 알고리즘은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다.

호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다.

2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다.

이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 

'JAVA > 프로그래머스' 카테고리의 다른 글

8. 팩토리얼  (0) 2020.12.21
7. 소수 판별  (0) 2020.12.21
5. 대문자 ↔ 소문자  (0) 2020.12.20
4. 10진수 → N진수  (0) 2020.12.20
3. 최빈수 찾기  (0) 2020.12.08