문제 풀이/백준
[백준]2581번. 소수(JAVA)
27200
2024. 4. 13. 22:16
https://www.acmicpc.net/problem/2581
문제
풀이
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
int sum = 0;
int min = 0;
for(int i = a; i <= b; i++){
sum += era(i);
if(min == 0){
min = sum;
}
}
if(sum == 0) System.out.println(-1);
else{
System.out.println(sum);
System.out.println(min);
}
}
public static int era(int n){
if(n == 1) return 0;
for(int i = 2; i <= Math.sqrt(n); i++){
if(n % i == 0){
return 0;
}
}
return n;
}
}
에라토스테네스의 체에서 핵심 부분만 가볍게 빼와서 전체적으로 비교해보는 풀이로 정리했다.
실제로는 배열을 직접 만들어서 비교하는 것이 더욱 효율적이다.