| 문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
| 입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
| 출력
주어진 수들 중 소수의 개수를 출력한다.
| 예제 입력 1
4
1 3 5 7
| 예제 출력 1
3
| 문제의 키 포인트
1. 소수를 어떻게 판별할 것인가?
2. 소수란?
1과 자기 자신 외의 약수를 가지지 않는 1보다 큰 자연수
| 해결방안(Solution)
1. 소수판별은 따로 함수를 선언하여 코드를 간단히 구성한다.
2. 판별식은 아래의 소스코드와 같다.
(조건 1): 주어진 수가 1인 경우 소수.
(조건 2): 자신 외의 약수를 가지지 않는다. 즉, 본인 이외의 숫자로는 나누어지지 않는 숫자라면 소수.
| 소스코드(SourceCode)
// BOJ_1978_Search_Deciaml, 소수 찾기
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Isdecimal(int n); //소수 판별함수 선언
int main(void)
{
int N, i, num;
int cnt = 0;
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d", &num);
if(Isdecimal(num))
{
cnt++;
}
}
printf("%d", cnt);
return 0;
}
int Isdecimal(int n)
{
int i = 0;
if (n <= 1)
{
return 0;
}
for (i = 2; i <= n; i++)
{
if ((n % i) == 0)
{
return 0;
}
}
return 1;
}
| 문제출처
https://www.acmicpc.net/problem/1978
반응형
'코딩 | 알고리즘 & 문제풀이 > 백준_Backjoon' 카테고리의 다른 글
[C언어] Backjoon_Code 11653, 소인수분해 (0) | 2021.07.25 |
---|---|
[C언어] Backjoon_Code 2581, 소수 (0) | 2021.07.24 |
[C언어] Backjoon_Code 1011, Fly me to the Alpha Centauri (0) | 2021.07.22 |
[C언어] Backjoon_Code 2869, 달팽이는 올라가고 싶다 (0) | 2021.07.17 |
[C언어] Backjoon_Code 1193, 분수찾기 (0) | 2021.07.16 |