백준 문제풀이

1978번 : 소수 찾기

하다블 2022. 6. 8. 18:46
반응형

문제는 다음과 같습니다.

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

 

1978번: 소수 찾기

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

www.acmicpc.net

 

풀이 코드는 다음과 같습니다.

#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
  bool prime[1001]{false};
  prime[0]=true;
  prime[1]=true;
  for(int i{2};i<sqrt(1001);i++)
    {
      if(prime[i]==true)
      {
        continue;
      }
      else
      {
        int temp{i};
        while(temp<1001)
          {
            temp+=i;
            prime[temp]=true;
          }
      }
    }
  int n;
  int total{0};
  cin>>n;
  for(int i{0};i<n;i++)
    {
      int temp;
      cin>>temp;
      if(prime[temp]==false)
      {
        total++;
      }
    }
  cout<<total<<"\n";
  return 0;
}

1부터 1000까지의 수가 소수인지 판별한 다음 수를 입력받아 그 수가 소수이면 count 하는 방식으로 처리했습니다.

1부터 1000까지 소수판별은 에라토스테네스의 체를 이용하여 처리했습니다.

반응형