본문 바로가기
코딩테스트/코딩테스트 합격을 위한 알고리즘

소수 판별 알고리즘 (JAVA)

by 현군의 coding&IT story 2024. 8. 9.

소수?

1과 자기 자신 만을 약수로 가지는 수

이때 0과 1은 소수가 될 수 없다.

 

Ex. 16은 1,2,4,8,16을 약수로 가진다. 따라서 소수가 아니다.

Ex. 7은 1,7을 약수로 가진다. 1과 자기 자신의 수(7) 을 약수로 가지므로 소수이다.

 

소수 판별 방법

어떤 수가 소수가 되려면 2부터 시작해서 (어떤 수/2) 까지 나누었을 때 모두 나누어 떨어지면 안된다.

 

Ex. 13은 소수인가?

13 % 2  != 0 (통과)

13 % 3 != 0 (통과)

13 % 4 != 0 (통과)

13 % 5 != 0 (통과)

13 % 6 != 0 (통과)

-> 소수이다.

 

Ex. 8은 소수인가?

8 % 2 == 0 (소수가 아니다.)

 

코드

    // 소수인지 판별하는 함수
    public boolean isPrime(int checkPrime) {
    	if(checkPrime == 0 || checkPrime == 1) return false; // 0과 1은 소수가 될 수 없다.
        for(int i=2; i<=checkPrime/2; i++) {
            if(checkPrime % i == 0) return false;
        }
        return true;
    }

 

문제 모음

문제 이름 문제 태그 문제 사이트 해설
소수 만들기 (프로그래머스) #소수 판단, #조합(Combination) https://school.programmers.co.kr/learn/courses/30/lessons/12977  
소수 찾기 (프로그래머스) #소수 판단, #순열(Permutation), #해시 https://school.programmers.co.kr/learn/courses/30/lessons/42839