[백준] 2581번 소수 (JAVA)

sarah·2023년 1월 24일
0

BaekJoon

목록 보기
7/11

해결

코드

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int M = Integer.parseInt(br.readLine());
        int N = Integer.parseInt(br.readLine());

		// N이하의 소수 여부 배열 구하기
        boolean[] primeArray = getPrimeArray(N);

		// 최솟값
        int min = -1;
		// 합
        int sum = 0;

		// M이상 N이하 소수 구하기
        for(int i=M; i< primeArray.length; i++) {
            if( !primeArray[i] ) {
                if( min == -1 ) {
                    min = i;
                }
                sum += i;
            }
        }

		// 소수가 없는 경우 -1 출력
        if( min == -1 ) {
            System.out.println(-1);
        } else {
            System.out.println(sum);
            System.out.println(min);
        }
    }

    public static boolean[] getPrimeArray(int max) {
        boolean[] primeArray = new boolean[max+1];
        primeArray[0] = true;
        primeArray[1] = true;

        for(int i=2; i <= Math.sqrt(max); i++) {
            if( primeArray[i] ) continue;

            for(int j=i*i; j<primeArray.length; j=j+i) {
                primeArray[j] = true;
            }
        }

        return primeArray;
    }
}

0개의 댓글