백준/브루트포스

BOJ 2581 - 소수

누누01 2023. 4. 20. 11:21
728x90

2581번: 소수 (acmicpc.net)

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 


 

M 이상 N 이하인 소수들의 합과 최솟값을 구하는 문제이다.

 

소수는 2부터 그 수의 -1 범위의 수는 약수가 될 수없다는 특징을 가지고 메서드를 만들어 해결하였다.

주의할 점은 M이 1인 경우 예외처리를 해줘야 한다.

 

코드를 보면 쉽게 이해가 갈 것이다.

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int sum = 0;
        int min = Integer.MAX_VALUE;

        int M = Integer.parseInt(br.readLine());
        int N = Integer.parseInt(br.readLine());

        for (int i = M; i <= N; i++) {
            if (i == 1) {
                continue;
            }

            if (isDecimal(i)) {
                sum += i;
                min = Math.min(min, i);
            }
        }
        if (sum == 0) {
            System.out.println(-1);
        } else {
            System.out.println(sum);
            System.out.println(min);
        }


    }

    public static boolean isDecimal(int n) {
        boolean isDecimal = true;
        for (int i = 2; i < n; i++) {
            if (n % i == 0) {
                isDecimal = false;
                break;
            }
        }

        return isDecimal;
    }
}