사실 이러한 코딩은 8비트 시절 어셈블리(6502)로도 흔히 써먹던 방법입니다.
고1 수준의 수학책에 보면 나오죠.
n^2 = 시그마{i = 1 to n} (2i - 1)
즉, 1부터 시작하는 홀수를 차례로 더해 어떤수(n^2)이 되면, 그 더한 횟수가 어떤수의 제곱근이란 거죠.
말이 복잡한가요?
예를 들어 봅시다.
1 + 3 = 4 죠?
4를 만드는데 홀수 몇개가 필요했죠? 2 입니다.
즉 4의 제곱근은 2죠
1 + 3 + 5 = 9 죠? 즉 9의 제곱근은 3입니다.
이런식이죠.
도형으로 그려보면 오히려 더 쉬운데
똑같은 크기의 정사각형 블럭이 있다고 가정하고
블럭 하나에 블럭 셋을 더한단 말은
# + ### -->
##
##
이런 모양이 되죠?
거기다 ##### 를 더하면
###
###
###
모양이 됩니다. 당연하게도.
즉, 정사각형의 가로 세로 크기를 1 늘인단 말은
## #
## #
## #
원래의 길이 * 2(밑변 + 높이) + 1 이란 말이라... 홀수가 되는것이죠.
그렇다면 소수점 까지의 제곱근은 어떻게 구하느냐.
sqrt(n) * sqrt(100) / 10 = sqrt(n) 라는 등식은 당연한것이죠? sqrt(100) / 10 = 1 이니까요
따라서 sqrt(n * 100) / 10 = sqrt(n) 또한 성립하고
덧셈으로 제곱근 구하는 방법으론 자연수 형태의 제곱근 밖에 구할 수 없지만,
100 ^ 원하는 자리수 로 곱해서 구한 다음 10 ^ 원하는 자리수로 나눌때 소수점을 고려해 주면 되는것이죠.
p.s. 저런걸 신문에 내는 사람도... 조선시대를 우습게 보는게 아닐지...
|