Algorithm/📖Baekjoon
#2581 소수
yewoneeee
2022. 5. 7. 23:22
# 문제
# 입력 및 출력
# 풀이
전에 풀었던 소수 찾기 문제를 참고했음
에라토스테네스의 체 방법 사용!
#include <iostream>
#include <vector>
using namespace std;
int prime[10001] = { -1,-1, };
int main() {
for (int i = 2; i < 10001; i++) {
prime[i] = i;
} // 배열 초기화
for (int i = 2; i < 10001; i++) {
for (int j = i + i; j < 10001; j += i) {
prime[j] = -1;
}
} // 소수만 남겨두고 나머진 -1로 설정
int m, n, sum = 0, min;
cin >> m >> n;
vector<int> p;
for (int i = m; i <= n; i++) {
if (prime[i] != -1) p.push_back(prime[i]);
} // 소수면 p 벡터에 넣기
if (p.empty()) {
cout << -1 << endl;
return 0;
} // 소수가 하나도 없으면 -1 출력
min = p.front(); // 최소값
while (!p.empty()) {
sum += p.front();
p.erase(p.begin());
} // 소수의 합
cout << sum << "\n" << min << "\n";
return 0;
}
메모리도 적고 길이도 짧은 코드가 있었지만 이게 알아보기 더 편한 것 같아서 그냥 이걸로 썼다