본문 바로가기

백준/C++

[Baekjoon/C++] 소수 찾기 1978번

Baekjoon Online Judge

문제로 이동

 

문제

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

 

입력

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

 

출력

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

 


예제 입력 예제 출력
4
1 3 5 7
3

풀이

#include <iostream>
using namespace std;

int main() {
    int N, M, count = 0;
    cin >> N;

    // N만큼 숫자 M을 입력받는다.
    for (int i = 0; i < N; i++) {
        cin >> M;

        // 1은 소수가 아니다.
        if (M != 1) {
            for (int i = 2; i <= M; i++) {
                if (i == M) count++;
                if (M % i == 0) break; // 소수는 자기자신과 1만으로만 
                                       // 나누어 떨어져야한다.
            }
        }
    }

    cout << count;

    return 0;
}

입력 받은 숫자를 2부터 입력 받은 숫자로 나눠서 소수 여부를 파악했다. for문이 입력한 숫자에 다다르기 전 중간에 나눠 떨어지는 수가 있다면 break를 통해 다음 입력으로 넘어가고, 중간에 break되지 않으면 입력한 숫자는 소수이기에 count에 1을 더했다.