Problem Solving Log

[Baekjoon] 1929 : 소수 구하기 (C++)

TypeMIN 2022. 3. 1. 18:57
728x90

Baekjoon Online Judge 1929번 : 소수 구하기


문제

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

입력

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

출력

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

예제 입력

3 16

예제 출력

3
5
7
11
13

코드

#include <iostream>

using namespace std;

int main() {
  int M, N;
  int prime[1000000];
  for(int i = 0; i < 1000000; i++){
    prime[i] = 1;
  }
  prime[0] = 0;
  for(int i = 2; i * i <= 1000000; i++){
    if(prime[i - 1] == 1){
      for(int k = i + i; k <= 1000000; k += i){
        prime[k - 1] = 0;
      }
    }    
  }
  cin >> M >> N;
  for(int i = M - 1; i < N; i++){
    if(prime[i] == 1){
      cout << i + 1 << '\n';
    }
  }
}
728x90
반응형