본문 바로가기

컴퓨터공학/수학

(3)
N보다 작은 특정 수의 배수를 찾아보자[최대 공약수, 최소 공배수, 교집합, Ugly Number III] ## 접근방법 간단히 생각해보자, N보다 작은 2의 배수의 개수는 몇 개일까? 정답은, N / 2개이다. N / 2개가 된다는 사실은 자명하므로 증명은 생략하겠다. A와 B가 있을 때, 두 수의 최대 공약수는 얼마일까? GCD(A, B) = GCD(B, A % B)이다. 증명은 아래와 같다. GCD(A, B) = G일 때, GCD(B, A % B)의 최대공약수도 G일까? A = G * a B = G * b A = B * q + r A % B = r = A - B * q B = G * b r = A - B * q = G * a - G * b * q= G(a - bq) 으로 증명될 수 있다. 이제 최소 공배수에 대해서 알아보자, 최소 공배수는 두 수의 곱에다가 최대 공약수를 나눠주면 된다. LCM(A, B)..
부동소수점 표기 및 소수 이진수 표현하기 소수 이진수 표현에 대해서 생각해보자. (여기서 말하는 소수는, 0.625를 의미) Q. 만약에 십진수 소수 0.625가 있다면, 소수 이진수를 어떻게 구해줘야할까? 입시교육을 받은 사람이라면, 자연수를 이진수로 표기할 때는 2로 나누고, 소수의 이진수를 곱할 때는 2를 곱한다. 0.625가 2진수 101로 표현되는 것은 다들 알고 있다. 두 값이 같다는 것은 101을 십진수로 표기하면, 1/2 + 1/8 = 0.625로 간단하게 검산할 수 있다. 결과보다 과정에 중점을 두려고 한다. 왜 2를 곱하는 과정에서 나오는 값들이 이진수로 쓰이게 되는 것일까? 2를 한번 곱해서 1이 나오는 값은, 1/2가 존재한다. 2를 두번 곱해서 1이 나오는 값은, 1/4가 존재한다. 위의 원리로, 소수점을 2로 곱하는 과..
진수 나누기 입시 과정을 거치면서, 십진수를 특정 N진수로 변환하는 과정을 수없이도 해봤다. 하지만 그 과정이 왜 십진수를 N진수로 변환하는 것인가에 대해서 생각하지 않았다. 이 얘기가 무슨 얘기인지, 아래의 예시를 통해서 조금 더 생각해보자. 11을 이진수로 표기해보자. 우리는 2로 순차적으로 나눠가며, 생기는 몫과 나머지를 이용해서 십진수 11이 이진수 1011로 표기된다는 사실을 알고 있다. 검산 과정을 통해서, 두 값이 같다는 것도 증명할 수 있다. 하지만 결과를 통해서, 그 과정이 옳다는 것을 증명하고 싶지 않고 과정을 통해서 결과가 옳다는 것을 나타내고 싶다. 직관적인 이해를 하고 싶어서, 생각하는 과정을 글로 표현해보려고 한다. 11을 이진수로 표현하는 과정을 생각해보려 한다. 11을 2로 나누면 몫은 ..