자연수를 인자로 받아 소수 판별하는 함수

LJM·2023년 3월 2일
0

알고리즘이론

목록 보기
21/29

소수: 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수

인자로 9를 받았다면 2부터 ~~ 제곱근(9) 까지 loop 하면서 9를 나눈 나머지가 0이 아니면 소수이다
즉 2, 3 으로만 나눠보고 나눠떨어지지 않으면 소수이다

인자로 17을 받았다면 2,3,4 로만 나눠보면 된다

그럼 왜 제곱근까지만 나눠보면 되는가 9의 경우를 보자


9는 2로 나눠보면 몫은 4이고 나머지는 1이다
그러므로 4로 또 나눠볼 필요가 없다
5 이상 8까지 나눠볼 필요가 없다 몫이 1이 나오므로. 소수는 1과 자신을 제외한 수로 나눠지지 않아야 소수니까
9 로 나눠볼 필요가 없다 자기 자신을 제외한 수로 나누어지지 않아야 소수니까

public static boolean isPrime(int n)
    {
        if(n < 2)
            return false;
        
        for(int i = 2; i <= Math.sqrt(n); ++i)
        {
            if(n % i == 0)
            {
                return false;
            }
        }

        return true;
    }
profile
게임개발자 백엔드개발자

0개의 댓글