Algorithm/Algorithm

최대공약수 최소공배수, 진법

lee308812 2018. 8. 15. 17:30

[ 최대공약수 ] 


- 유클리드 호제법을 이용해서 구할 수 있다.

- 두 수 A,B의 최대공약수를 구하려면, A를 B로 나눈 나머지가 r이라고 할 때,



 GCD(A, B) = GCD(B, r)


 r = 0이 될 때의 B가 최대 공약수이다.



int GCD(int a, int b)
{
	while (b != 0)
	{
		int r = a % b;
		a = b;
		b = r;
	}

	return a;
}

[ 최소공배수 ]


- 다음 관계를 이용하여 푼다.



 LCM * GCD = A * B


 LCM = A * B / GCD





[ N진법 수를 쉽게 10진법 수로 바꾸기 ] 


ex) N = 3진법 수 102를 10진법 수로 바꾸기


왼쪽에서부터 순차적으로 전개해나간다.


102


먼저 가장 왼쪽에 있는 수 1             -> 1

기존 수에 3을 곱하고 0을 더한다.     -> (1 * 3) + 0

기존 수에 3을 곱하고 2를 더한다.     -> (1 * 3 + 0) * 3 + 2 = 11



'Algorithm > Algorithm' 카테고리의 다른 글

조합 활용하기  (0) 2019.09.13
파스칼의 삼각형  (0) 2018.10.01
[그래프] 인접 리스트  (0) 2018.08.21
Quick Sort / Merge Sort  (0) 2018.08.21
소수 구하기, 소인수분해  (0) 2018.08.16