#문제

#작성 코드

#include <iostream>
#include <stdio.h>

bool prime(int n){
	if( n<2 )
		return false;
	for(int i=2; i*i<=n; i++){
		if( n%i == 0 )
			return false;
	}
	return true;
}

int main()
{
	int N, cnt=0;
	// 수의 개수 입력 
	scanf("%d", &N);
	// N개만큼의 수 입력 
	int *arr = new int[N];
	for(int i=0; i<N; i++){
		std::cin>>arr[i];
	}
	
	// 소수 판별하기
	for(int i=0; i<N; i++){
		if(prime(arr[i]))
			cnt++;
	}
	printf("%d", cnt);
	return 0;
} 

##

2~sqrt(n) 범위 내에서 %연산을 통해 소수를 판별하면 2~n 범위에서 판별할때보다 계산량이 적어진다.

prime함수에서 n이 1일 경우를 빠트리지 않도록 주의!

'BOJ' 카테고리의 다른 글

BOJ 4948번 :: Chebyshev's Theorem(베르트랑 공준)  (0) 2019.11.19
BOJ 1929번 :: 소수 구하기  (0) 2019.11.18
BOJ 2581번 :: 소수  (0) 2019.11.18
BOJ 2775번 :: 부녀회장이 될테야  (0) 2019.11.17
BOJ 10250번 :: ACM 호텔  (0) 2019.11.17

+ Recent posts