본문 바로가기

[BOJ] - JAVA

[백준] 2581 : 소수 JAVA 풀이

1. M과 N을 입력받는다.

2. M이상 N이하의 수에 대해 그 수가 소수인지 검사한다.

3. 소수라면 소수의 합을 구하는 변수 sum에 더한다. 그리고 소수값 중 최솟값을 찾는다.

4. M이상 N이하의 값 중 소수가 없다면 sum이 0일 테니 이 경우에는 -1을 출력한다.

5. sum이 0이 아닌 경우(소수가 존재하는 경우) 소수의 합과 최솟값을 출력한다.

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

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());
        int min = 10001;
        int sum =0;
        
        for(int i=M;i<=N;i++){
            if(is_prime(i)){ // 소수라면
                sum += i; // 합을 구하고
                if(min>i) min = i; // 최솟값이라면 최솟값 업데이트
            }
        }
        
        if(sum==0) System.out.println(-1); // 소수가 없다면 -1 출력
        else{ // 소수가 존재한다면
            System.out.println(sum); // 합과
            System.out.println(min); // 최솟값 출력
        }
    }
    // 소수인지 검사하는 함수
    // 약수가 2개인 경우 소수이므로 true를 반환
    public static boolean is_prime(int num){
            int cnt=0;
            for(int i=1;i<=num;i++){
                if(num%i==0) cnt++;
            }
            if(cnt==2) return true;
            else return false;
        }
}