별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

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

 

 

입력

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

 

 

출력

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

 

 

예제 입력 1

 4

 1 3 5 7

 

예제 출력 1

 3

 

 

출처

· 데이터를 추가한 사람: bclim9108

· 문제의 오타를 찾은 사람: djm03178

 

 

알고리즘 분류

· 수학

· 에라토스테네스의 체

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
using namespace std;
 
int CheckPrimeNumber(int num);
 
int main()
{
    int n, num = 0, res;
    int ary[101];
    
    cin >> n;
    
    for(int i = 0; i < n; i++) {
        cin >> ary[i];
    }
    
    for(int i = 0; i < n; i++) {
        res = CheckPrimeNumber(ary[i]);
        if (res == 2) num++;
        else continue;
    }
    
    cout << num << endl;
    
    return 0;
}
 
int CheckPrimeNumber(int a) 
{
    int cnt = 0;
    for (int i = 1; i <= a; i++) {
        if (a % i == 0) cnt++;
    }
    
    return cnt;
}





- 에라토스테네스의 체(Eratosthenes' sieve) : 그리스의 수학자이자 지리학자인 에라토스테네스가 고안한 소수(素數)를 찾는 방법으로, 이 방법으로 소수를 찾으려면, 2부터 시작해 자연수를 차례로 쓴 다음, 2 이외의 2의 배수, 3 이외의 3의 배수, 5 이외의 5의 배수의 순서로 수를 지워나가 끝에 남는 수가 소수이다.

[네이버 지식백과] 에라토스테네스의 체 [Eratosthenes' sieve] (두산백과)


소수(Prime Number)란, 숫자 1을 제외한 자기 자신의 수와 1로만 나누어지는 수를 의미한다.

for문을 이용하여 1부터 입력한 수까지 나누어 떨어질 경우 변수(cnt)의 크기를 하나씩 증가시켰다. 그리고 변수(cnt)의 크기가 2일 경우(1과 자기 자신의 수로만 나누어질 경우) 소수의 개수(num)를 증가시켰고, 최종적으로 num의 변수에 담긴 숫자를 출력하도록 하였다.

728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ2490][C++] 윷놀이  (0) 2018.10.01
[BOJ12791][C++] Starman  (0) 2018.10.01
[BOJ7567][C++] 그릇  (0) 2018.09.29
[BOJ7568][C++] 덩치  (0) 2018.09.29
[BOJ12400][C++] Google語스  (0) 2018.09.08
[BOJ10174][C++] 팰린드롬  (0) 2018.09.08
[BOJ14490][C++] 백대열  (0) 2018.08.25
[BOJ14495][C++] 피보나치 비스무리한 수열  (0) 2018.08.24
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖