문제 풀이/백준

[백준]2581번. 소수(JAVA)

27200 2024. 4. 13. 22:16

https://www.acmicpc.net/problem/2581


 

문제


풀이

import java.io.*;
import java.util.*;

public class Main {


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int a = Integer.parseInt(br.readLine());
        int b = Integer.parseInt(br.readLine());

        int sum = 0;
        int min = 0;

        for(int i = a; i <= b; i++){
            sum += era(i);
            if(min == 0){
                min = sum;
            }
        }

        if(sum == 0) System.out.println(-1);
        else{
            System.out.println(sum);
            System.out.println(min);
        }

    }

    public static int era(int n){
        if(n == 1) return 0;
        for(int i = 2; i <= Math.sqrt(n); i++){
            if(n % i == 0){
                return 0;
            }
        }
        return n;
    }

}

 

에라토스테네스의 체에서 핵심 부분만 가볍게 빼와서 전체적으로 비교해보는 풀이로 정리했다.

실제로는 배열을 직접 만들어서 비교하는 것이 더욱 효율적이다.