728x90
반응형
728x90
반응형
728x90
반응형

Windows API에서 2의 거듭제곱 여부를 확인

GNU C에는 log2() 함수가 있어 2의 거듭제곱 여부를 쉽게 확인할 수 있지만, Windows 표준 수학 함수에는 해당 함수가 없습니다.

따라서 log() 함수를 활용하여 다음과 같이 구현할 수 있습니다:

c

#include <math.h>
#include <limits.h>
#include <stdio.h>

int main() {
    for (int i = 2; i < INT_MAX; i++) {
        double t = log((double)i) / log(2.0);
        int r = (int)ceil(t);
        int p = (int)pow(2, r);

        if (i == p) {
            printf("%d\n", i); // 2의 거듭제곱 수입니다.
        }
    }
    return 0;
}

이 코드는 2부터 INT_MAX까지의 정수 중 2의 거듭제곱인 수를 찾아 출력합니다.

log() 함수를 사용하여 주어진 수의 로그 값을 계산하고, 이를 통해 2의 거듭제곱 여부를 판단합니다.

728x90
반응형

+ Recent posts