반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 4948 베르트랑 공준 본문

백준(Baekjoon) 문제

백준 4948 베르트랑 공준

huiung 2019. 1. 22. 22:41
반응형

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 주어진 n에 대하여 n보다 크고 2n보다 작거나 같은 범위의 소수의 개수를 출력하는 문제입니다.

 

저는 에라토스테네스의 체를 이용하여 2n보다 작은 소수를 모두 찾고 n과 2n사이의 소수의 개수를 카운트해서 풀었습니다.

 

다음은 코드입니다.

 

#include <iostream>
//에라토스테네스의 체 

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int N = 1;
	bool arr[300000];
	 
	
	while(1) {
		fill_n(arr, 300000, true);
		arr[0] = false;
		arr[1] = false;
		int num = 0;
		cin >> N;
		
		if(N == 0)
			break;
	
	for(int i =2; i <= 2*N; i++) {
			if(arr[i]) {
				for(int j = i+i; j <= 2*N; j+=i)
					arr[j] = false;
			}
		}
	
	for(int i = N+1; i <= 2*N; i++)
		if(arr[i])
			num++;
		
		cout << num << '\n';	
	}
	return 0;
}
반응형