임의의 숫자가 제곱수인지 빠르게 판별하는 법
0. 발아점 @chiw00k 님께서 트윗에 올린 질문을 해결하는 과정에서… @zaeku 님의 솔루션을 공부하면서 의문점이 생겼다. 제곱수인지를 식별하는데 갑자기 아래의 식이 튀어나온 것이다. h = n & 0xF 1. 기본형 임의의 숫자가 제곱수인지 판별하는 건 사실 그리 어렵지 않다. 대략 아래와 같은 함수만 하나 만들면 된다. bool IsSquare(unsigned int num) { unsigned int temp = (unsigned int)(sqrt((double)num)+0.5); return temp*temp == num; } 하지만, 아무리 컴퓨팅 파워가 좋아져도 sqrt()는 느린 함수다. 위의 함수를 돌리기 전에 제곱수가 아닌 경우를 배제하는 방법을 찾아봤다. 2. 10진수 두 수를 ..