문제
https://www.acmicpc.net/problem/1978
1978번: 소수 찾기
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
www.acmicpc.net
해결한 방법
입력값을 2부터 입력값의 제곱근보다 낮은 수로 나눴을때 나누어 떨어지면 합성수 나누어 떨어지지 않는다면 소수로 판단합니다.
for문은 조건을 먼저 따지기 때문에 for문 내부 코드가 실행되지 않아서 숫자 2, 3에 예외를 두지 않아도 됩니다.
1도 2와 3과 같이 소수로 처리되기 때문에 예외처리를 해줬습니다.
#include <iostream>
using namespace std;
bool is_prime(int a) {
if (a == 1)
return false;
for (int i = 2; i*i <= a; i++){
if (a % i == 0)
return false;
}
return true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
int count = 0;
int input;
while (n--) {
cin >> input;
if (is_prime(input))
count++;
}
cout << count;
return 0;
}
'알고리즘 공부 > 백준' 카테고리의 다른 글
6588번 골드바흐의 추측 with C++ (0) | 2022.07.11 |
---|---|
1929번 소수 구하기 with C++ (0) | 2022.07.10 |
2609 최대공약수와 최소공배수 with C++ (0) | 2022.07.10 |
10430 나머지 with C++ (0) | 2022.07.10 |
17299 오등큰수 with C++ (0) | 2022.07.10 |