본문 바로가기

Baekjoon/C++

[C++][BOJ/백준] 1929 소수 구하기

 

 

Baekjoon Online Judge

 

클릭 시 문제로 이동

 

 

[문제]

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

 

 

[입력]

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

 

 

[출력]

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.

 

 


 

[코드]

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    int n, m;

    cin >> n >> m;

    vector<bool> primeNum(m + 1, true);

    primeNum[0] = primeNum[1] = false;

    for (int i = 2; i <= m; i++)
    {
        if (primeNum[i])
        {
            for (int j = i * 2; j <= m; j += i)
                primeNum[j] = false;
        }
    }

    for (int i = n; i <= m; i++)
    {
        if (primeNum[i])
            cout << i << '\n';
    }

    return 0;
}