백준 4948번 : 베르트랑 공준[Java]

문제출처

www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net

 

어제 공부한 에라토스테네스의 체를 이용

import java.util.Scanner;
public class d020_Q4948 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		while(n != 0) {
			int rslt = find_prime(n);
			System.out.println(rslt);
			n = sc.nextInt();
		}
		sc.close();

	}
	
	public static int find_prime(int n) {
		int[] prime = new int[2 * n + 1];
		for(int i = 2; i <= 2 * n; i++) {
			prime[i] = i;
		}
		
		for(int i = 2; i <= 2 * n; i++) {
			if(prime[i] == 0) {continue;}
			for(int j = 2 * i; j <= 2 * n; j += i) {
				prime[j] = 0;
			}
		}
		
		int count = 0;
		for(int i = n + 1; i <= 2 * n ; i++) {
			if(prime[i] != 0) {count++;}
		}
		return count;
	}

}

 

한번에 맞았다. 사실 문제를 맞고 나면 이제 그만하고 자고 싶은데

더 효율적인 방법이 없을지 고민하는 시간이 가장 힘들다.

그만하고 싶은 마음을 이겨내고 구선생의 도움을 받아 다른사람들의 답변 검색하러 간다...

 

myoskin