[백준 1978] 소수 찾기

💻Wade💻·2022년 1월 12일
0

Problem Solving

목록 보기
6/11
post-thumbnail

문제 (Silver 4)

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

입력

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

출력

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

문제 풀이

  • 입력의 범위가 1000 이하의 자연수이기 때문에 먼저 에라토스테네스의 체를 이용하여 1000 이하의 자연수에 대해 소수 판별을 해 주었습니다.
  • 그 후 숫자를 입력 받으면서 소수의 개수를 count한 후 출력!

코드

#include <iostream>
#include <cstring>

using namespace std;

#define MAX 1000

int main() {

    // 에라토스테네스의 체
    bool is_prime[1010];
    memset(is_prime, 1, sizeof(is_prime));
    
    is_prime[0] = false;
    is_prime[1] = false;
    for(int i=2; i*i<=MAX; ++i) {
        if(is_prime[i]) {
            for(int j=2*i; j<=MAX; j+=i) {
                is_prime[j] = false;
            }
        }
    }
    
    int N, num, answer = 0;
    cin >> N;
    for(int i=0; i<N; ++i) {
        cin >> num;
        if(is_prime[num]) answer++;
    }
 
    cout << answer;
    
    return 0;
}

문제 링크

2609번: 소수 찾기

profile
티스토리로 오세욤! https://wadekang.tistory.com/

0개의 댓글