백준/C++

[백준] 1978번: 소수 찾기 | C++ 풀이

성실한 당근농부 2023. 6. 9. 12:40

# 문제

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

 

 


 

# 풀이

이번에도 어렵지 않은 문제! 바로 정답 소스코드를 확인해보자.

 

#include <iostream>
using namespace std;

int main(){
    int cnt = 0;
    int n, num;
    
    cin >> n;
    while(n--){
        cin >> num;
        bool prime = 1;
        if(num == 1) continue;
        for(int i = num-1; i>1; i--){
            if(num%i == 0){
                prime = 0;
                break;
            }
        }
        if(prime) cnt++;
    }
    
    cout << cnt;
    return 0;
}

 

우선 소수는 2 이상의 양의 정수 중, 1과 자기 자신만을 약수로 갖는 수다.

따라서 소수인지 아닌지 체크할 수 있는 prime 변수를 bool로 만들어주고, 테스트 케이스로 1이 입력되는 경우에는 다음 테스트 케이스로 넘어갈 수 있도록 해주었다.

 

1 외의 수에 대해서는 for문을 돌며 자기 자신과 1을 제외한 값으로 나눠주었다. 이때 나머지가 0인 값이 나오면 prime을 소수가 아니라고 변경해주고 탐색을 중단해준다.

그리고 prime이 true(소수)라면 갯수를 세어주고, 세어준 값을 출력해주면 끝!

 

 

 

 

 

 


 

 

 

1978번: 소수 찾기

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

www.acmicpc.net

 

728x90