백준 1978 소수 찾기 C++

2023. 9. 16. 18:33알고리즘문제 풀이/백준

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

 

풀이

에라토스테네스의 체를 이용한다.

참고정보:

에라토스테네스의 체 위키백과

https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4

 

코드

#include <iostream>
using namespace std;

int main() {
	int N, k, count=0;

	//Seive of Eratosthenes
	bool *primeArray = new bool[1001];
	primeArray[1] = false;
	for (int i = 2; i <= 1000; i++)
		primeArray[i] = true;

	for (int i = 2; i * i <= 1000; i++) {
		if(primeArray[i])
			for (int j = i * i; j <= 1000; j += i) {
				primeArray[j] = false;
			}
	}


	//N is the number of test case
	cin >> N;

	//check if test case is prime number
	for (int i = 0; i < N; i++) {
		cin >> k;
		if (primeArray[k]) count++;
	}
	cout << count;
}

'알고리즘문제 풀이 > 백준' 카테고리의 다른 글

백준 2164 카드2 C++  (0) 2023.09.16
백준 2042 구간 합 구하기 C++  (0) 2023.09.16
백준 1967 트리의 지름 C++  (0) 2023.09.16
백준 1931 회의실 배정 C++  (0) 2023.09.16
백준 1924 2007년 Python  (0) 2023.09.16