문제 링크


🔷 분류

수학, 정수론, 소수 판정, 에라토스테네스의 체

✒️ 문제 설명

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

⬅️ 입력

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

➡️ 출력

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

💻 코드 (C++)

#include <iostream>
using namespace std;

bool num[1000001];

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

  int s, e;
  cin >> s >> e;
  num[0] = num[1] = true;
  for (int i = 2; i * i <= e; i++) {
    if (num[i]) continue;
    for (int j = i * i; j <= e; j += i) {
      num[j] = true; 
    }
  }
  for (int i = s; i <= e; i++) {
    if (!num[i]) cout << i << "\n";
  }
  return 0;
}

글 이동

Comments