Baekjoon/단계별로 풀어보기

[BOJ / 백준] 4948번 베르트랑 공준 C++ 문제 풀이

728x90

단계별로 풀어보기 - 수학 2단계 - [4단계] 4948번

문제

문제 링크 : www.acmicpc.net/problem/4948

 

4948번: 베르트랑 공준

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

www.acmicpc.net

입력 복사 : 

1 10 13 100 1000 10000 100000 0

 

CODE

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

int main() {
	int n, rt, cnt = 0;

	while (1) {
		cin >> n;
		if (!n)	//0 입력시 종료
			break;

		for (int i = n + 1; i <= 2 * n; i++) {
			rt = sqrt(i);
			if (rt == 1 && i != 1) {	//2,3인 경우
				cnt++;
				continue;
			}
			if (i % 2) {	//홀수일 경우
				for (int j = 2; j <= rt; j++) {
					if (!(i%j))
						break;
					if (j == rt) {
						cnt++;
					}
				}
			}
		}
		cout << cnt << '\n';
		cnt = 0;
	}
}

 

풀이

이전 소수 구하기 문제와 같은 방식으로 해결하였다.

검사 범위를 n+1부터 2*n까지로 변경하여 소수를 카운트하였다.

 

결과

728x90