백준

백준 4948 - 베르트랑 공준

뚜비히히 2021. 1. 18. 15:05

이 문제는 소수를 찾는 것이 핵심이였다. 나는 우선 300000까지의 소수를 모두 구한 다음 for을 통해 소수의 갯수를 구하는 방법을 사용하였다. 

소수 구하는 방법은 에라토스테네스의 체를 사용하였다. 

www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

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

www.acmicpc.net

#include <iostream>
#include <algorithm>
using namespace std;

int dp[300000];

int main() {
	// 소수 구하기
	dp[0] = 1, dp[1] = 1;
	for (int i = 2; i < 300000; i++) {
		if (dp[i] == 1)continue;
		for (int j = i * 2; j < 300000; j += i) {
			dp[j] = 1;
		}
	}
	while (1) {
		int n;
		cin >> n;
		if (n == 0)break;
		int ans = 0;
		for (int i = n + 1; i <= 2 * n; i++) {
			if (dp[i] == 0)ans++;
		}
		cout << ans << '\n';
		
	}
}

'백준' 카테고리의 다른 글

백준 15651 - N과 M(3)  (0) 2021.05.15
백준 1012 - 유기농 배추  (0) 2021.01.19
백준 1193 - 분수찾기  (0) 2021.01.18
백준 11054 - 가장 긴 바이토닉 부분 수열  (0) 2021.01.18
백준 1655 - 가운데를 말해요  (0) 2021.01.15