/**
* 최대 공약수 구하기.
* 유클리드 호제법을 이용한 최대 공약수 구하기
* 큰 수를 작은 수로 나눈 나머지를 반복적으로 취하여 나머지가 0이 될때까지 작동하여 최대공약수를 구한다.
*
* @author chiptune
* @since 2023.09.01
*/publicclassGCD{/**
* 재귀 방식
* 큰 수를 작은 수로 나눈 나머지가 0이 될 때까지 반복 하여 큰 수를 리턴한다.
*/publicstaticintrecursion(inta,intb){if(b==0)returna;returnrecursion(b,a%b);}/**
* 반복문 방식
* b에 a에서 b를 나눈 나머지를 계속 반복 저장하여 0이 될 때 까지 수행 후, 큰 수를 리턴한다.
*/publicstaticintrepeat(inta,intb){while(b!=0){inttemp=b;b=a%b;a=temp;}returna;}}
최대 공배수
유클리드 호제법에 따라 최대 공약수를 구한 후, 두 수를 곱한 값에서 나눈다.
자바 소스
/**
* 최소 공배수 구하기
* 두 수의 배수가 되는 값 중, 최소 값을 구하는 방법.
* 유클리드 호제법에 따라 최대 공약수를 구한 후, 두 수를 곱한 값에서 나눈다.
*
* @author chiptune
* @since 2023.09.01
*/publicclassLCM{// 최소공배수 = 두 수의 곱 / 최대공약수publicstaticintlcm(inta,intb){returna*b/gcd(a,b);}privatestaticintgcd(inta,intb){// 재귀if(b==0)returna;returngcd(b,a%b);// 반복// while (b != 0) {// int temp = b;// b = a % b;// a = temp;// }// return a;}}
테스트 해보기
publicclassTest{publicstaticvoidmain(String[]args){// what is GCD of 10,5 ?System.out.println(GCD.recursion(10,5));// 5// what is LCM of 10,5 ?System.out.println(LCM.lcm(10,5));// 10}}