반응형
에라토스테네스의 체
소수를 찾는 아주 기가막힌 알고리즘 에라토스테네스의 체! #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 |