제급근을 구하기 위해 함수를 만들자. mySqrt()함수로 명명.
#include<stdio.h>
int mySqrt(int num)
{
int root=1;
if(num<=1 ) return 0;
while (root < num/root && root * root !=num )
root++;
if(root * root == num) return root ;
return 0;
}
int main(void){
int num,result ;
scanf("%d",&num);
result = mySqrt(num);
printf("\nmySqrt(%d) : %d",num,result);
}
mySqrt() 함수를 만들어 봤다. 위에서 중요한 구문은 while(root<num/root && root *root !=num) 입니다. root는 하나씩 값이 올라가면서 제곱근인지 확인해야 합니다. 확인하는 방법이 독특합니다. root로 num을 나누었을 때 그 값은 root 보다 커야 합니다. 크다는 것은 한 번 더 나눌 수 있다는 의미입니다. 그렇다면 아직 root를 제곱해서 num을 만들 수 없는 수라는 의미입니다. 그래서 root를 한 번 더 +1 하여야 하는 근거가 됩니다.
그리고 root * root 를 해서 num보다 작으면 한 번 더 root를 ++ 합니다. 제곱근을 어떻게 구할 수 있을까 고민했지만 드디어 알아냈습니다. 많은 분들이 이제 점점 수학을 컴퓨터 언어로 변환하는 것을 잘할 수 있으면 좋겠어요.
'C_C++' 카테고리의 다른 글
포인터 활용하여 strlen() 함수를 직접 만들어보자 (0) | 2020.07.06 |
---|---|
putstr()함수를 만들어보자. (0) | 2020.07.06 |
재귀 문법을 활용하여 팩토리얼 구하기 (0) | 2020.07.06 |
포인터 문법으로 스왑 swap 함수 작성해보자 (0) | 2020.07.06 |
write() 함수로 0~9 숫자 출력 (0) | 2020.07.06 |