/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_sqrt.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jayang <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/02/12 08:37:13 by jayang #+# #+# */
/* Updated: 2022/02/12 12:53:09 by jayang ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
int ft_sqrt(int nb)
{
unsigned long long num;
unsigned long long nb_2;
if (nb <= 0) // nb가 0보다 작을 경우 모두 처리.
return (0);
nb_2 = (unsigned long long)nb; // 남은 nb는 모두 양수밖에 없으므로 unsigned로 형변환
num = 1;
while (nb_2 >= (num * num)) // num * num이 오버플로우 나버리면 음수값을 가지게 됨.
{
if (nb_2 == (num * num))
return ((int)num); // 리턴할 때는 다시 int타입으로 강제 형변환
num++;
}
return (0);
}