반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 1929 소수 구하기(에라토스테네스의 체) 본문

백준(Baekjoon) 문제

백준 1929 소수 구하기(에라토스테네스의 체)

huiung 2019. 1. 22. 22:38
반응형

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 에라토스테네스의 체를 이용하여 소수를 구하는 문제입니다. 시간 제한이 있기 때문에 단순히 소수를 구하는 방법으로는 풀 수 없습니다.

 

에라토스테네스의 체란 어떤수 이하에 있는 모든 소수를 구해야 할 때 2의 배수를 모두 제거하고 그다음 3의 배수를 모두 제거하고 그다음 5의 배수를 모두 제거하는 방법으로 소수들을 골라내는 방법입니다. bool 배열을 통하여 구현을 하였습니다.

 

다음은 코드입니다.

 

#include <iostream>
//에라토스테네스의 체 

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	int M,N;
	bool arr[1000001];
	fill_n(arr, 1000001, true);
	arr[0] = false; //0과 1인 경우는 소수가 아니다 
	arr[1] = false; 
	cin >> M >> N;
	for(int i =2; i <= N; i++) {//2인경우 부터 차례대로 배수에 해당하는 수를 false로 바꿈 
			if(arr[i]) {
				for(int j = i+i; j <= N; j+=i)
					arr[j] = false;
			}
				
		}
	
	for(int i = M; i <= N; i++)
		if(arr[i])
			cout<<i<<'\n';
	
	return 0;
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 9020 골드바흐의 추측  (0) 2019.01.22
백준 4948 베르트랑 공준  (0) 2019.01.22
백준 2108 통계학  (0) 2019.01.22
백준 2800 괄호 제거  (0) 2019.01.21
백준 1092 배  (0) 2019.01.21