전공공부
[BOJ_2581] 소수 본문
단순히 소수를 구하고 이에 따라서 해당 범위의 최솟값과 소수들의 합을 구하는 문제이다.
소수 판별법이 잘 기억이 나지 않아 제곱근까지의 숫자들을 모두 검증하는식으로 풀었다.
package Math;
import java.util.*;
import java.io.*;
public class BOJ_2581 {
static int min = Integer.MAX_VALUE;
static int ans = 0;
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tk = new StringTokenizer(in.readLine()," ");
int M = Integer.parseInt(tk.nextToken());
int N = Integer.parseInt(in.readLine());
find(M,N);
if(ans == 0){
System.out.println(-1);
}else {
System.out.println(ans + "\n" + min);
}
}
private static void find(int m, int n) {
for(int i = m; i <= n; i++){
boolean checker = check(i);
if(i == 2 || i == 3){
min = Math.min(min,i);
}
if(checker){
continue;
} else {
min = Math.min(min,i);
ans += i;
}
}
}
private static boolean check(int n) {
if(n == 1){
return true;
}
for(int i = 2; i*i <= n; i++){
if(n%i == 0){
return true;
}
}
return false;
}
}
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ_11653] 소인수 분해 (0) | 2023.09.30 |
---|---|
[BOJ_5618] 공약수 (0) | 2023.09.20 |
[BOJ_17615] 볼 모으기 (0) | 2023.09.10 |
[BOJ_12919] A와 B 2 (0) | 2023.09.07 |
[BOJ_14940] 쉬운 최단거리 (0) | 2023.09.05 |