BOJ1978

BOJ 1978 소수찾기

문제

코드

#include <iostream>
using namespace std;

int main()
{
    int n;

    cin >> n;
    int cnt = n;
    int num[100] = {
        0,
    };
    for (int i = 0; i < n; i++)
    {
        cin >> num[i];
        if (num[i] == 1)
            cnt--;
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = 2; j <= sqrt(num[i]); j++)
        {
            if (num[i] % j == 0)
            {
                cnt--;
                break;
            }
        }
    }

    cout << cnt << endl;
    return 0;
}
  • 에라토스테네스의 체
    0으로 초기화된 배열에 배수의 값들을 1로 바꿔 소수만 판별해낼 수 있는 방법

  • 에라토스테네스의 체를 직접 구현하고,
    배열에 담긴 1 3 5 7 을 하나씩 비교하면서 소수라고 판별되면 cnt를 증가하는 방법으로 진행하였음

  • 에라토스테네스의 체 구현을 확실하게 하지 못해서, segmentation fault오류가 자꾸 났었다.

  • 내가한 방법
    1로 초기화된 배열에서 ch[i * 2] = 0;

좋은 웹페이지 즐겨찾기