BOJ
BOJ #1978 소수 찾기
dbdb
2021. 1. 15. 16:43
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
소스코드(C언어)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int N;
int test[110] = { 0 };
int iscmp[1100] = { 0 }; //0이면 소수, 1이면 복소수
scanf("%d", &N);
for (int i = 0; i < N; i++)
scanf("%d", &test[i]);
iscmp[0] = iscmp[1] = 1;
for (int i = 2; i <= 1000; i++)
if (iscmp[i] == 0)
for (int j = i + i; j <= 1000; j += i)
iscmp[j] = 1;
int num = 0;
for (int i = 0; i < N; i++) {
if (iscmp[test[i]] == 0)
num++;
}
printf("%d\n", num);
}
Idea
에라토스테네스의 체를 이용한다.