본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 4948 베르트랑 공준

by 까망 하르방 2022. 2. 28.
반응형

Approach

출처https://www.acmicpc.net/problem/4948

 

[N, 2N] 사이의 소수 개수를 구하는 문제이다.

입력 개수가 많을 수 있기 때문에

효율적으로 소수 개수를 구할 수 있는 "에라토스테네스의 체" 개념을 이용한다.

 

 

<소수를 구하는 방법>

• 소수 (Prime Number) 찾기 - 1 (Basic)

• 소수 (Prime Number) 찾기 - 2

• 소수 (Prime Number) 찾기 - 3 (에라토스테네스의 체)


#include <stdio.h>

const int MAX_N = (123456 * 2) + 2;
int prime[MAX_N] = { 1, 1, 0, };
int N, ans;

int main()
{
	// freopen("input.txt", "r", stdin);
	for(int i = 2; i < MAX_N / i; i++)
	{
		if (prime[i]) continue;
		
		for (int j = i * i; j < MAX_N; j += i)
		{
			if (j % i == 0) prime[j] = 1;
		}
	}
	
	scanf("%d", &N);
	while (N != 0) // 마지막 입력까지 진행
	{
		ans = 0;
		for (int i = N + 1; i <= N * 2; i++)
		{
			if (!prime[i]) ans++;
		}

		printf("%d\n", ans);
		scanf("%d", &N); // 새로운 N 입력
	}
}
반응형

'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글

[BOJ] 백준 7568 덩치  (0) 2022.03.03
[BOJ] 백준 5622 다이얼  (0) 2022.03.02
[BOJ] 백준 10866 덱  (0) 2022.02.25
[BOJ] 백준 4673 셀프 넘버  (0) 2022.02.25
[BOJ] 백준 11441 합 구하기  (0) 2022.02.23

댓글