Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- int
- 배열
- 알고리즘
- vector
- 정렬
- 다이나믹프로그래밍
- 깊이우선탐색
- Set
- 티스토리챌린지
- 유클리드호제법
- 오블완
- DFS
- C++
- 분할정복
- N과M
- priority_queue
- map
- 백준
- 그래프
- 백트래킹
- BFS
- 프로그래머스
- stoi
- 에라토스테네스의 체
- Sort
- DP
- 우선순위큐
- 최소공배수
- 문자열
- 이분탐색
Archives
- Today
- Total
안녕 세상아,
[c++/알고리즘] 에라토스테네스의 체 본문
에라토스테네스의 체는 유명한 소수 구하기 문제이다.
시간 복잡도가 O(N^1/2)이기 때문에 많은 양의 소수를 구할 때 유용하게 사용할 수 있다.
원리는 간단하다. 2의 배수인 수를 모두 지운 후 2는 옆에 적어준다. 이후 지워지지 않은 가장 작은 수(n) 부터 n의 배수를 지워주고 n을 옆에 적어주면 된다.
<c++ 코드로 구현하기>
#include <iostream>
using namespace std;
int n = 120;
int main() {
ios::syn_with_studio(false);
cin.tie(NULL);
cout.tie(NULL);
int arr[121];
//배열에 값 입력
for (int i = 2; i <= n; i++) {
arr[i] = i;
}
for (int i = 2; i <= n; i++) {
if (arr[i] == 0)
continue;
for (int j = i + i; j <= n; j+=i) //i의 배수 지우기 (배열의 i값 0으로 만들기)
arr[j] = 0;
}
for (int i = 2; i <= n; i++) {
if (arr[i] != 0) {
cout << arr[i] << " ";
}
}
}
궁금한 점은 댓글로 편안하게 물어봐주세요! 물론 저도 모를지도,,
'c++ 개념' 카테고리의 다른 글
[c++/sstream] 문자열 공백 기준으로 자르기 (0) | 2023.05.16 |
---|---|
[c++/algorithm] std::set,std::map (0) | 2023.05.11 |
[c++/struct] 구조체(struct) 정렬하기 (vector 사용) (0) | 2023.05.08 |
[c++/자료형] 데이터 형식 범위, 개념 (0) | 2023.05.07 |
[c++/queue/heap] STL::priority_queue (우선순위 큐) (0) | 2023.05.05 |