/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_fibonacci.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: jayang <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/02/10 21:35:43 by jayang #+# #+# */
/* Updated: 2022/02/10 21:53:30 by jayang ### ########.fr */
/* */
/* ************************************************************************** */
#include <unistd.h>
int ft_is_prime(int nb)
{
unsigned long long i;
unsigned long long nb_2;
if (nb <= 1) // 1보다 작은 수는 모두 처리
return (0);
i = 2;
nb_2 = (unsigned long long)nb;
while (i * i < nb_2) // i를 nb 직전까지 반복시켜서 나누어 떨어지는 경우 체크
{ // 2, 3은 어차피 소수라서,,, 예외 처리가 필요 없다.
// 왜 제곱근이 기준인가?? => 제곱근 범위 나누기법
// 해당 수의 제곱근을 기준으로 대칭적으로 합성수들의 곱이 일어난다.
// 예를들어, 18이면 ... 1 2 3 << 3루트2 >> 6 9 18 ..
// 즉, 18의 경우 i가 4까지 들어갈 수 있는데, 그 이하로 나누어지지 않는다면
// 이후의 연산은 필요하지 않다는 뜻이다.
if (nb_2 % i == 0)
return (0);
i++;
}
return (1);
}