반응형
문제
주어진 숫자들 중 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력
4 1 3 5 7
예제 출력
3
출처:https://www.acmicpc.net/problem/1978
문제 해결 과정:
-소수의 특징: 1은 소수가 아니다
자기자신과 1만 약수를 가진다.
- 따라서 1은 약수가 아니고 2는 약수이며 2로 나눠지는 것들은 소수가 아니다
- 또한 2의 배수가 아닌것들은 반으로 나누어 1부터 반으로 나눈 수까지 차레대로 나누어 나머지가 0이면 소수가 아니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include<iostream> using namespace std; bool isPrime(int p) { if (p <= 1) { return false; } if (p % 2 == 0) { return (p == 2); } for (int i = 3; i <= p / 2; i++) { if (p%i == 0) { return false; } } return true; } int main() { int capacity; int cnt = 0; cin >> capacity; int* arr = new int[capacity]; for (int i = 0; i < capacity; i++) { cin >> arr[i]; if (isPrime(arr[i])) { cnt++; } } cout << cnt << endl; return 0; } | cs |
반응형
'알고리즘' 카테고리의 다른 글
2017_11_25 <백준> 1260번 DFS와 BFS (0) | 2017.11.25 |
---|---|
2017_11_24<백준>2504번 괄호의 값 (c++) (0) | 2017.11.24 |
2017_11_22 방 번호 (0) | 2017.11.22 |
2017_11_21 2007년(규칙찾기) (0) | 2017.11.21 |
2017_11_20 부녀회장이 될테야(규칙 찾기) (0) | 2017.11.20 |