본문 바로가기
JAVA 코딩 알고리즘 연습/백준

백준 - 소수 (2581번) / JAVA (자바) 코딩 알고리즘 연습

by easpop 2025. 5. 5.
728x90
반응형

소수 성공

 
 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 173014 69442 58348 39.835%

문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.

입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.

출력

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

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

예제 입력 1 복사

60
100

예제 출력 1 복사

620
61

예제 입력 2 복사

64
65

예제 출력 2 복사

-1

728x90
반응형
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        List<Integer> a = new ArrayList<>();
        int b = scanner.nextInt();
        int c = scanner.nextInt();

        for (int i = 0; b <= c; i++) {
            int cnt = 0;
            boolean test = true;
            for (int j = 1; j <= c; j++) {
                if (b % j == 0) {
                    cnt++;
                }

                if (cnt > 2) {
                    test = false;
                    break;
                }
            }
            if (cnt == 2 && test) {
                a.add(b);
            }
            b++;
        }

        int sum = 0;
        for (int j = 0; j < a.size(); j++) {
            sum += a.get(j);
        }

        if (a.size() > 0) {
            System.out.println(sum);
            System.out.println(a.get(0));
        } else {
            System.out.println(-1);
        }
    }
}
728x90
반응형

댓글