에라토스테네스의 체는 소수를 찾는 방법이다.

 

2부터 시작해서 소수의 배수들을 모두 제거하는 알고리즘을 통해 대량의 소수를 구할 수 있다.

#define bigNum 1000000001
bool primeNumber[bigNum];

void setPrime() {
	for (int i = 2; i < bigNum; i++) {
		primeNumber[i] = true;
	}

	for (int i = 2; i < bigNum; i++) {
		if (!primeNumber[i]) continue;

		for (int j = 2 * i; j < bigNum; j += i) {
			primeNumber[j] = false;
		}
	}
}

10^9개의 소수를 구하는데 약 18초가 소요된다.

'ProblemSolving' 카테고리의 다른 글

[BOJ] 1083_소트  (0) 2021.03.01
[BOJ] 1322_X와 K  (0) 2021.02.27
[BOJ] 12865_평범한 배낭  (0) 2021.02.25
[BOJ] 2156_포도주 시식  (0) 2021.02.25
[BOJ] 1500_최대 곱  (0) 2021.02.24
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기