-
728x90
* 접근 방법
- 에라토스테네스의 체를 이용
- loop를 돌며, num에 소수가 아닌 경우 1로 바꿔둠
- loop를 돌며, 사용자가 입력한 M과 N에 소수가 있으면 answer에 push_back
- 합계는 accumulate, 최소값은 *min_element를 이용하여 출력 (소수가 없으면 -1)#include <iostream> #include <vector> #include <algorithm> #include <numeric> using namespace std; int main() { vector<int> num(10001, 0); vector<int> answer; int M, N; cin >> M >> N; num[1] = 1; for (int i = 2; i*i <= 10000; i++) { if (num[i] == 0) for (int j = i * i; j <= 10000; j += i) num[j] = 1; } for (int i = M; i <= N; i++) { if (num[i] == 0) answer.push_back(i); } if (answer.empty()) cout << -1; else { cout << accumulate(answer.begin(), answer.end(), 0) << "\n"; cout << *min_element(answer.begin(), answer.end()); } return 0; }
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[4948] 백준 : 베르트랑 공준(C++) (0) 2020.04.26 [1929] 백준 : 소수 구하기(C++) (0) 2020.04.26 [1978] 백준 : 소수 찾기(C++) (0) 2020.04.26 [10870] 백준 : 피보나치 수 5(C++) (0) 2020.04.26 [10872] 백준 : 팩토리얼(C++) (0) 2020.04.26 댓글