문제

 

 

풀이

에라토스테네스의 체를 이용해 주어진 범위 내의 소수의 개수를 구하였다.

#include <iostream>
#include <cmath>

using namespace std;

int main() {
	int a[246913];
	int n;
	
	cin >> n;

	while (1) {
		int count = 0;

	
		a[0] = 0;
		a[1] = 0;

		for (int i = 2; i <= 2 * n; i++)
			a[i] = 1;

		for (int i = 2; i <= int(sqrt(2 * n)); i++) {
			for (int j =2; i*j <= 2*n; j++) {
				a[i*j] = 0;                  
			}
		}

		for (int k = n+1; k <= 2 * n; k++) {
			if (a[k] == 1)
				count++;
		}


		cout << count << '\n';


		cin >> n;
		if (n == 0)
			break;
	}

}

 

'백준 > 약수, 배수와 소수' 카테고리의 다른 글

13909번: 창문 닫기 [C++]  (0) 2023.03.29
17103번: 골드바흐 파티션 [C++]  (0) 2023.03.29
1929번: 소수 구하기 [C++]  (0) 2023.03.29
4134번: 다음 소수 [C++]  (0) 2023.03.29
2485번: 가로수 [C++]  (0) 2023.03.29

+ Recent posts