728x90
반응형
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
반응형
'C C++' 카테고리의 다른 글
32비트 윈도우즈 자료형과 크기 (2) | 2007.09.04 |
---|---|
Windows API IsWindowUnicode 함수로 유니코드 지원 여부 확인하기 (0) | 2007.08.28 |
basic_string의 replace 함수로 문자열 치환하기 (0) | 2007.08.13 |
VCL Example Main Source - Project1.cpp (0) | 2007.08.03 |
Visual C++ 6.0 재배포 패키지(vc6redist)와 호환성 이슈 (0) | 2007.07.31 |