[알고리즘]/백준

자바 - 구현 - 백준 2581 소수

broship 2021. 5. 22. 14:57

문제


 

 

 

문제해결


import java.util.Scanner;

public class S4_2581 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        //에라토스테네스의체로 소수 먼저 구하기
        boolean[] arr = new boolean[m+1];
        arr[0] = true;
        arr[1] = true;
        for (int i = 2; i <= Math.sqrt(m); i++) {
            if (arr[i])
                continue;
            for (int j = i*i; j < m+1; j+=i) {
                arr[j] = true;
            }
        }

        // 소수의 합
        int sum = 0;
        for (int i = n; i <= m; i++) {
            if (!arr[i])
                sum += i;
        }
        if (sum==0)//소수가 없을 경우 -1 출력
            System.out.println(-1);
        else {
            System.out.println(sum);
            // 최소값
            for (int i = n; i <= m; i++) {
                if (!arr[i]){
                    System.out.println(i);
                    break;
                }
            }
        }
    }
}

- 에라토스테네스의체로 m까지의 소수를 구한다

- n~m까지의 소수 합과 최소값을 구한다

- 소수가 없을 경우 -1을 출력한다