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

 

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

 

1929번: 소수 구하기

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

www.acmicpc.net


 

해결전략

 

소수 구하기

 


 

코드

 

#include <iostream>
using namespace std;

int arr[1000001];

int main()
{
    int m, n;
    cin >> m >> n;

    for (int i = 2; i <= n; i++){
        arr[i] = i;
    }

    for (int i = 2; i * i <= n; i++)
    {
        if (arr[i] == 0) continue;
        
        for (int j = i * i; j <= n; j += i){
            arr[j] = 0;
        }
    }

    for (int i = m; i <= n; i++)
    {
        if (arr[i] != 0){
            cout << arr[i] << '\n';
        }
    }
    
    return 0;
}