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;
}

메모리도 적고 길이도 짧은 코드가 있었지만 이게 알아보기 더 편한 것 같아서 그냥 이걸로 썼다