백준/브루트포스
BOJ 2581 - 소수
누누01
2023. 4. 20. 11:21
728x90
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;
}
}