백준/C++
백준 1929번 : 소수 구하기 [C++]
대니스
2022. 8. 18. 13:07
주소 : https://www.acmicpc.net/problem/1929
1929번: 소수 구하기
첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.
www.acmicpc.net

소스 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int main()
{
int M, N;
int arr[1000001]{ 0, };
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;
}
마무리 : 소수 구하기 문제는 에라토스테네스의 체를 이용하여 소수를 찾는다. 숫자들이 있으면 1을 제거해주고 2의 배수, 3의 배수 제거하는 식으로 남은 숫자 즉, 소수를 출력할 수 있게 된다.