/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   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);
}