문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
코드
#include <iostream>
#include <cmath>
using namespace std;
static int IsPrimeNumber(int _number)
{
// :: 예외처리
if (_number == 1) return 0;
if (_number == 2) return 1;
// :: 2부터 sqrt(_number)까지 나누어 떨어지는 수가 있는지 확인한다.
int i;
for (i = 2; i <= sqrt(_number); i++) if (_number % i == 0) return 0;
// :: 소수인 경우
return 1;
}
int main()
{
// :: 문제
// :: 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
// :: 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
// :: 주어진 수들 중 소수의 개수를 출력한다.
// :: 1. N개의 수를 입력받는다.
int N;
cin >> N;
// :: 2. 소수인지 판별한다.
int primeNumberCount = 0;
for (int i = 0; i < N; i++)
{
int num;
cin >> num;
primeNumberCount += IsPrimeNumber(num);
}
// :: 3. 소수의 개수를 출력한다.
cout << primeNumberCount << endl;
return 0;
}
참고
'C++ > Baekjoon' 카테고리의 다른 글
백준 2581: 소수 (0) | 2023.01.29 |
---|---|
백준 11653: 소인수분해 (0) | 2023.01.26 |
백준 1929: 소수 구하기 (0) | 2023.01.24 |
백준 5597: 과제 안 내신 분..? (0) | 2022.12.23 |
백준 10807: 개수 세기 (0) | 2022.12.17 |