본문 바로가기
백준

[1978번] 소수 찾기

by 2744m 2019. 4. 17.
1978번: 소수 찾기
 
www.acmicpc.net

n개의 수가 주어지고, 주어진 수들 중 소수의 개수를 구하는 문제다.

소수는 약수가 1과 자기 자신 밖에 없는 수이다.

그렇다면 소수를 구하려면, 자기 자신 보다 작은 수 들을 나눴을 때,

나눠 지는 것이 없다면 소수라고 할 수 있다.

자신보다 작은 수를 나누다가 나머지가 0

즉, 나눠지는 수가 있으면 합성수라고 체크를 해주고 반복문을 빠져나온다

/*1978번 소수찾기*/
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int arr[101];
int num[1001];//0일 때 소수, -1일 때 합성수 or 1
int prime_cnt;
void eratos(int n) {
	if (n == 1) num[n] = -1;
	if (n > 2) {
		for (int i = 2; i < n; i++) {
			if (n%i == 0) {
				num[n] = -1;
				break;
			}
		}
	}
}
int main() {
	ios::sync_with_stdio(0), cin.tie(0);
	cin >> n;
	for (int i = 0; i < n; i++)	cin >> arr[i];
	for (int i = 0; i < n; i++) {
		eratos(arr[i]);
		if (num[arr[i]] == 0) prime_cnt++;
	}
	cout << prime_cnt;
}

.

'백준' 카테고리의 다른 글

[2609번] 최대 공약수와 최대 공배수  (0) 2019.04.17
[1929번] 소수 구하기  (0) 2019.04.17
[1037번] 약수  (0) 2019.04.10
[9663번] N-Queen  (0) 2019.04.10
[9095번] 1,2,3 더하기  (0) 2019.04.01

댓글