문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
나의 답
#include <bits/stdc++.h>
using namespace std;
int main(void) {
vector<int> decimal = {2};
int N;
scanf("%d", &N);
vector<int> input;
int cur_input;
for(int i = 0 ; i < N; ++i) {
scanf("%d", &cur_input);
input.push_back(cur_input);
}
sort(input.begin(), input.end());
for(int i = 3; i <= input.back(); ++i) {
bool is_decimal = true;
for(int j = 0; j < decimal.size(); ++j) {
if( i % decimal[j] == 0)
is_decimal = false;
}
if(is_decimal)
decimal.push_back(i);
}
int result = 0;
for(int i = 0; i < input.size(); ++i) {
if(find(decimal.begin(), decimal.end(), input[i]) != decimal.end())
result++;
}
printf("%d\n", result);
}
'백준' 카테고리의 다른 글
[6588번] 골드바흐의 추측 (0) | 2021.11.21 |
---|---|
[1929번] 소수 구하기 (0) | 2021.11.21 |
[2609번] 최대공약수와 최소공배수 (0) | 2021.11.21 |
[17425번] 약수의 합 (0) | 2021.11.21 |
[17427번] 약수의 합 2 (0) | 2021.11.21 |