알고리즘/BOJ(C++)

[BOJ] 2581 :: 소수

쿠마쿠마34 2018. 6. 1. 23:18
반응형

https://www.acmicpc.net/problem/2581


N부터 M까지의 소수를 구해서 벡터에 저장해주는 것이 핵심입니다!


벡터에 모든 원소를 탐색하며 총 합을 구하고, 작은 수부터 소수를 구하는 함수를 돌릴 것이기 때문에 항상 최솟값이 벡터의 가장 앞에 오므로 최솟값은 v[0]으로 접근할 수 있습니다.


소수가 존재하지 않을 경우 vector이 비여서 따로 예외처리 해주는거 잊어서 런탐에러 난건 안비밀.....



#include <iostream>
#include <vector>
using namespace std;
bool find(int n)
{
if (n == 1)
return false;
bool flag = true;
for (int i = 2; i < n; i++)
{
if (n%i == 0)
{
flag = false;
break;
}
}
return flag;
}
int main()
{
int a, b;
cin >> a >> b;
vector<int> v;
for (int i = a; i <= b; i++)
{
bool flag = find(i);
if (flag)
{
v.push_back(i);
}
}
if (v.empty())
cout << "-1" << endl;
else
{
int sum = 0;
for (int i = 0; i < v.size(); i++)
{
sum += v[i];
}
cout << sum << endl;
cout << v[0] << endl;
}
}

댓글로 질문해주세요 :)


반응형