Development Logs/Algorithms

[JAVA] 프로그래머스 : 소수 찾기 (Level 1)

유뱅유뱅뱅 2020. 8. 28. 19:05

https://programmers.co.kr/learn/courses/30/lessons/12921?language=java

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

해결 방안

주어진 숫자 n의 1~n 까지의 소수 갯수를 찾는 문제이다.

에라토스테네스의 체를 사용하여 i 가 소수인지 확인하였다.

 

코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=2; i<=n; i++){
            if(i==2){
                answer++;
                continue;
            }
            
            // 소수 아님
            if(i%2==0) continue;
            
            // 소수 아님
            boolean flag = true;
            for(int j=3; j<=(int)(Math.sqrt(i)); j+=2){
                if(i%j==0) {
                    flag = false;
                    break;
                }
            }
            if(flag){
                answer++;
            }
                
        }
    
        return answer;
    }
}