# 문제
주어진 수 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
'백준 > 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 |