n의 값을 입력으로 받아, 함수를 통해 Log n의 값을 계산하고 화면에 출력하는 것이 이 프로그램의 목적입니다.
로그(Logarithm)는 지수 연산의 역함수입니다. 즉, 로그를 계산한다는 것은 주어진 밑(base)을 몇 번 거듭제곱해야 해당 값이 되는지 그 지수를 구하는 과정입니다.
수식으로 표현하면 다음과 같습니다.
$$\log_b x\;\:=\: y\:than\:b^{y}=x$$
예를 들어,
$$\log_2 64\;\:=\: 6\:than\:2^{6}=64$$
예시 입출력
입력-: Log 20 출력-: 4 입력-: Log 64 출력-: 6
알고리즘
시작
함수 unsigned int log2n(unsigned int num)
단계 1-> (num > 1)이 참이면 1 + log2n(num / 2) 반환, 거짓이면 0 반환
함수 int main()
단계 1-> num을 선언하고 20으로 초기화
log2n(num)의 결과 출력
종료
예제 코드
#include <stdio.h>
// 아래 코드는 재귀적 접근 방식을 사용합니다
unsigned int log2n(unsigned int num) {
return (num > 1) ? 1 + log2n(num / 2) : 0;
}
int main() {
unsigned int num = 20;
printf("%u\n", log2n(num));
return 0;
}
출력 결과
4
동작 원리 설명
이 프로그램은 재귀(recursion)를 활용해 밑이 2인 로그(log₂ n)의 정수 부분을 계산합니다. 숫자가 1보다 큰 동안 계속 2로 나누면서 호출될 때마다 1을 더하는데, 이때 2로 나눈 횟수가 곧 log₂ n의 내림 값이 됩니다.
예를 들어 num이 20이라면 20 → 10 → 5 → 2 → 1 순서로 총 4번 나누게 되므로 결과값은 4가 됩니다. 시간 복잡도는 O(log n)으로 매우 효율적인 방식입니다.