coding_test/BAEKJOON

백준 1978번 C언어 풀이

CodeJin 2021. 8. 24. 19:01

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

입력받은 수들에서 소수의 개수를 출력하는 문제. 저번에 만든 에라토스테네스의 체를 이용하면 된다.

 

#include <stdio.h>
#include <stdbool.h>

int main () {
    bool seive[1001] = {false, false};
    for (int i = 2; i < 1001; i++) {
        seive[i] = true; 
    }
    for (int i = 2; i < 1001; i++) {
        if (seive[i]) { 
            for (int p = 2; i*p < 1001; p++) {
                seive[i*p] = false;
            }
        }
    }

    int n, cnt = 0;
    scanf("%d", &n);

    int arr[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    for (int i = 0; i < n; i++) {
        if (seive[arr[i]]) cnt++;
    }
    printf("%d", cnt);
    return 0;
}