티스토리 뷰
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1
4
1 3 5 7
예제 출력 1
3
해설
술 마시면서 코딩하지 말자. 귀찮다, 만사가. 귀찮으니까 해설도 간단히 쓰자. 소수는 1과 자기 자신만을 약수로 하는 수이다. 그런데 약수라는 게 n(테스트할 수)/2을 기준으로 그보다 작은 수와 그보다 큰 수가 짝이 된다. 따라서 테스트할 수를 2로 나눈 수까지만 테스트하면 된다.n / 2
값을 2부터 나누어서 한번이라도 나머지가 0인 경우를 만나면 이건 소수가 아니다. 소수가 아닌 경우에는 0을, 소수인 경우에는 1을 리턴하는 함수 check_prime()
을 아래와 같이 작성한다.
int CheckPrime(void)
{
int test, half_test;
int i = 2;
scanf("%d", &test);
half_test = test / 2;
if (test == 1) {
return 0;
}
while ( i <= half_test ) {
if (test % i == 0 ) {
return 0;
}
i++;
}
return 1;
}
이 함수의 리턴값을 누적하여 출력하면 테스트 케이스가 소수인 경우의 합계가 구해진다. 코드를 완성하면 아래와 같다.
소스 코드: C
#include <stdio.h>
int check_prime();
int CheckPrime(void);
int main(int argc, char *argv[])
{
int i, test_case, sum = 0;
scanf("%d", &test_case);
for (i = 0; i < test_case; ++i) {
sum += CheckPrime();
}
printf("%d\n", sum);
return 0;
}
int CheckPrime(void)
{
int test, half_test;
int i = 2;
scanf("%d", &test);
half_test = test / 2;
if (test == 1) {
return 0;
}
while ( i <= half_test ) {
if (test % i == 0 ) {
return 0;
}
i++;
}
return 1;
}
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 소수 구하기(1929번) (0) | 2020.04.17 |
---|---|
백준(BAEKJOON): 소수(2581번) (0) | 2020.04.17 |
백준(BAEKJOON): Fly me to the Alpha Centauri(1011번) (0) | 2020.04.15 |
백준(BAEKJOON): ACM 호텔(10250번) (0) | 2020.04.12 |
백준(BAEKJOON): 부녀회장이 될테야(2775번) (0) | 2020.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Mac
- C
- books
- locallibrary
- judge
- QLabel
- QLineEdit
- 리찬규
- NK
- setText()
- tips
- 백준
- QGridLayout
- python3
- 유래
- 어원
- word
- 북한말
- baekjoon
- QtDesigner
- PyQt5
- Tistory
- BOJ
- Python
- django
- 리규찬
- QComboBox
- MacOS
- 소수
- words
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
02-18 12:33