# 문제
주어진 수 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(소수)라면 갯수를 세어주고, 세어준 값을 출력해주면 끝!
728x90
'백준 > C++' 카테고리의 다른 글
[백준] 11653번: 소인수분해 | C++ 풀이 (0) | 2023.06.11 |
---|---|
[백준] 2581번: 소수 | C++ 풀이 (0) | 2023.06.10 |
[백준] 9506번: 약수들의 합 | C++ 풀이 (0) | 2023.06.08 |
[백준] 2501번: 약수 구하기 | C++ 풀이 (0) | 2023.06.07 |
[백준] 5086번: 배수와 약수 | C++ 풀이 (0) | 2023.06.06 |