알고리즘 문제/백준

[C++] 에라토스테네스의 체 - 2960

우대비 2023. 1. 5. 11:14
반응형
 

에라토스테네스의 체

소수를 찾는 아주 기가막힌 알고리즘 에라토스테네스의 체! #include using namespace std; int n = 1000; bool a[1000]; void PrimeNumber() { for (int i = 2; i < n; i++) a[i] = true; for (int i = 2; i < n; i++) { if (a[i] == false) continu

flrjtwjrjt.tistory.com

위 문제는 에라토스테네스의 체를 이용해서 소수를 찾는 알고리즘은 아님

그냥 에라토스테네스의 체 알고리즘의 매커니즘을 이용해서 푸는 문제라고 볼 수 있음

 

int N, K;
bool a[10000];
vector<int> v;

void PrimeNumber()
{
	for (int i = 2; i <= N; i++)
		a[i] = true;

	for (int i = 2; i <= N; i++)
	{
		if (a[i] == false) continue;
		for (int j = i; j <= N; j += i)
		{
			if (a[j] == false) continue;
			a[j] = false;
			v.push_back(j);
		}
	}

	if (v.size() >= K) cout << v[K - 1];

}

 

1. 2의 배수 삭제 -> 3의 배수 삭제 -> ( 중복되는건 건너뛰기 ) -> 4의 배수 삭제... ............

-> N의 배수 삭제..

 

2. 삭제할 때마다 vector에 넣기

 

3. vector에 K번째에 위치한 수 출력

 

끝!

 

 

 

 

반응형
LIST

'알고리즘 문제 > 백준' 카테고리의 다른 글

[C++] 줄 세우기(위상 정렬) - 2252  (2) 2023.01.10
[C++] ACM Craft(위상 정렬) - 1005  (0) 2023.01.09
[C++] 광고(KMP) - 1305  (0) 2023.01.04
[C++] 찾기(KMP) - 1786  (0) 2023.01.04
[C++] Cubeditor(KMP) - 1701  (0) 2023.01.03