이전 문제 소수 구하기의 코드에서 조금만 수정해서 풀었다!
(n의 최대값*2) 크기의 배열을 만들어서 소수인지 아닌지를 boolean형으로 표기하고
n이 들어오면 n~n*2 사이의 배열들을 보고 소수이면 count해주는 것으로 풀었다!
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int max = 1234567 * 2;
boolean[] isPrimeNum = new boolean[max + 1];// false일때 소수
isPrimeNum[1] = true;// 숫자 1은 소수가 아님
for (int i = 2; i <= max; i++) {
for (int j = 2; j * i <= max; j++) {// 특정 숫자의 배수들은 소수가 아님
isPrimeNum[i * j] = true;
}
}
while (true) {
int n = sc.nextInt();
if (n == 0) {// 입력 0이면 끝
break;
}
int count = 0;
for (int k = n + 1; k <= 2 * n; k++) {
if (!isPrimeNum[k]) {
count++;
}
}
System.out.println(count);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 1085 직사각형에서 탈출 자바 (0) | 2020.01.07 |
---|---|
백준 9020 골드바흐의 추측 자바 (0) | 2020.01.06 |
백준 1929 소수 구하기 자바 (0) | 2020.01.02 |
백준 2581 소수 자바 (0) | 2019.12.03 |
백준 1978 소수 찾기 자바 (0) | 2019.12.02 |
댓글