[백준/JAVA] 2581번 소수

정은아·2023년 12월 28일

[알고리즘] 수학 모음

목록 보기
18/152
post-thumbnail

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// A,B를 입력받아 A~B부터 소수를 찾아 총 합을 구하고, 최솟값을 구하는 문제
		
		// 1. 테스트케이스 int를 2개 받아온다.
		// 2. 시작을 A부터 B까지 for문을 돌려서 소수를 찾는다.
		// 3. 총합과, 최솟값에 대한 변수를 받아온다.
		// 4. 소수를 찾으면 최소값을 찾기 위해 min을 찾아 비교한다.
		// 5. 소수를 찾으면 총합 변수에 계속 더해준다.
		
		Scanner sc = new Scanner(System.in);
		
		int A = sc.nextInt();
		int B = sc.nextInt();
		int sum = 0;
		int min = Integer.MAX_VALUE;
		
		for (int i = A; i <= B; i++) {
			boolean flag = true;
			if (i == 1) {
				flag = false;
			}
			
			for (int j = 2; j < i; j++) {
				if (i%j == 0) { 
					flag = false;
				}
			}
			
			if (flag == true) {
				sum += i;
				min = Math.min(min, i);
			}
		}
		
		if (sum == 0) {
			min = -1;
			System.out.println(min);
		}else {
			System.out.println(sum);
			System.out.println(min);
		}
	}
}

답이 계속 틀렸다고 해서 반례를 찾아본 결과, 1은 소수가 아니라 값을 제대로 넣어줘야 했다. i == 1 일 경우 flag = false로 둬서 해결!

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글