PS (C, C++)

[백준/C & C++] 1978 소수 찾기

최연재 2022. 8. 26. 02:20

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

www.acmicpc.net

코드 (C)

#include <stdio.h>

int check(int n)
{
	if (n == 1) return 0;
	for (int i = 2; i < n; i++) if (n % i == 0) return 0;
	return 1;
}

int main()
{
	int n, arr[101], count=0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
	for (int i = 0; i < n; i++) if (check(arr[i]) == 1) count++;
	printf("%d", count);
	return 0;
}

코드 (C++)

#include <iostream>
using namespace std;

int check(int n)
{
	if (n == 1) return 0;
	for (int i = 2; i < n; i++)
	{
		if (n % i == 0) return 0;
	}
	return 1;
}

int main()
{
	int n, arr[102], count=0;
	cin >> n;
	for (int i = 0; i < n; i++) cin >> arr[i];
	for (int i = 0; i < n; i++) if (check(arr[i]) == 1) count++;
	cout << count;
	return 0;
}

코드설명

반복문을 돌면서 배열에 수를 입력받는다. 

다시 반복문을 돌면서 check 함수의 반환값이 1일 경우에는 count를 1만큼 증가시킨다. 

check 함수는 입력된 수가 소수이면 1을, 소수가 아니면 0을 반환하는 함수이다. 1일 경우에는 바로 0을 반환하고, 그렇지 않은 경우 2부터 n-1까지 일일이 값을 나눠보며 소수인지를 판별한다. 

 

느낀 점

소수의 뜻을 생각해서 간단하게 푸는 문제였다. 다만 이 방식은 시간이 오래 걸리므로 다른 방식으로도 소수를 판별하는 방법을 생각해봐야 한다.