Algorithm/수학
Baekjoon2581 [Java] 소수 에라토스테네스의 체
한둥둥
2022. 10. 7. 11:36
import java.util.Scanner;
public class baekjoon2581 {
static boolean checkArr[]= new boolean[10001];
static int min = Integer.MAX_VALUE;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num1 = scan.nextInt();
int num2 = scan.nextInt();
scan.close();
int answer = soloCheck(num1,num2);
System.out.println(answer);
System.out.println(min);
}
static int soloCheck(int num1,int num2){
int sum = 0;
for(int i=2;i<checkArr.length-1;i++){
for(int j =i*i;j<checkArr.length-1;j+=i){
checkArr[j] = true;
}
}
for(int i=num1; i<=num2; i++){
if(!checkArr[i]){
min = Math.min(i,min);
sum+=i;
}
}
return sum;
}
}
우선적으로 checkArr이라는 소수 판별 배열을 만들어 주었다.
그러면 soloCheck 배열에서 소수인지 아닌지 for문을 통해서 구한 후에 checkArr배열에 넣어주었다.
그러고 나서 아래에서 내가 입력 값으로 받은것을 판별할 수 있게 for문을 통해서 반복문을 만들어주었으며 이를 통해
if문에서 false인 아이들은 소수이기 때문에 최소값과 sum 값을 구해주었음.
최소값을 구하는건 마음에 엄청들지는 않지만 일단 이정도로만 해둠..
에라토스테네스의 체를 까먹어서 구글에서 한번 찾아보고... 풀었음.