• toc {:toc}

문제

μ£Όμ–΄μ§„ 수 Nκ°œΒ μ€‘μ—μ„œΒ μ†Œμˆ˜κ°€ λͺ‡ κ°œμΈμ§€ μ°Ύμ•„μ„œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫 쀄에 수의 개수 N이 μ£Όμ–΄μ§„λ‹€. N은 100μ΄ν•˜μ΄λ‹€. λ‹€μŒμœΌλ‘œ N개의 μˆ˜κ°€ μ£Όμ–΄μ§€λŠ”λ° μˆ˜λŠ” 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

좜λ ₯

μ£Όμ–΄μ§„ μˆ˜λ“€ 쀑 μ†Œμˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

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

풀이

  1. μ†Œμˆ˜κ°€ 아닐 경우λ₯Ό 생각. > μ•½μˆ˜λ₯Ό κ°€μ§€κ³  μžˆλŠ” 경우 λŒ€μΉ­μ„±μ„ 띀닀. i * i < N인 κ²½μš°μ—μ„œλ§Œ μƒκ°ν•˜λ©΄ 됨.
  2. μœ„μ˜ κ²½μš°μ—μ„œ μ•½μˆ˜λ₯Ό κ°€μ§€κ³  μžˆμ§€ μ•ŠμœΌλ©΄ μ†Œμˆ˜κ°€ 됨.
#include <iostream>
 
using namespace std;
 
bool is_primeNum(int x);
 
int main()
{
	int N, x, num=0;
	cin >> N;
	for(int i=0; i<N; i++)
	{
		cin >> x;
		if(x == 1) continue;
		if(is_primeNum(x))
			num++;
	}
	cout << num << endl;
	
	return 0;
}
 
bool is_primeNum(int x)
{
	int i = 2;
	while(i*i<=x)
	{
		if(x%i==0)
			return false;
		i++;
	}
	return true;
}