SMALL
n부터 m까지 소수의 갯수를 구하는데 빠르게 구하는 방법
2부터 각 범위까지 배수를 지워 가는 형식
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 32 33 34 35 36 37 38 39 40 41 42 | #include<iostream> #include<vector> #include<algorithm> using namespace std; bool pn[1000001] = {0}; int main() { int n, m ; std::fill_n(pn, 1000001, true); cin >> n >> m; if(n <1 && n > 1000000) return -1; if (m <1 && m > 1000000) return -1; for(int i = 2; i*i <= m ;i++ ){ for(int a = 1 ; i*a <=m ; a++){ if(pn[i*a] == false) continue; if(pn[i*a] && a == 1){ pn[i*a] = true; } else { pn[i*a] = false; } } } for(int i = n ; i <= m;i++) { if (i == 1) continue; if(pn[i]) cout << i << '\n'; } } | cs |
LIST
'기타[etc] > 알고리즘' 카테고리의 다른 글
[알고리즘] 124나라의 숫자 (0) | 2018.03.27 |
---|---|
[알고리즘] 진법 변환 (0) | 2018.03.27 |
[알고리즘] DP- 땅따먹기 (0) | 2018.03.24 |
[알고리즘] DP-가장 큰 정사각형 찾기 (0) | 2018.03.23 |
[백준] 동적기획법 - 피보나치 0과 1 세기 (0) | 2018.03.19 |