알고리즘 문제
[백준] 2581번 소수
feelcoding
2020. 2. 3. 16:25
728x90
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
1은 소수가 아니라는 거 아주 잘 알면서도 코드 짤 때에는 그걸 생각을 안 하고 코드를 짠다.
소수 문제 풀 때 꼭 기억하자 1은 소수가 아니다!
1은 따로 예외로 두고 코드를 짜자.
#include <iostream>
#include <vector>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
vector<int> v;
for (int i = m; i <= n; i++) {
bool flag = false;
for (int j = 2; j < i / 2 + 1; j++) {
if (i % j == 0) {
flag = true;
break;
}
}
if (i == 1) flag = true;
if (!flag) v.push_back(i);
}
if (v.size() == 0) cout << -1 << endl;
else {
int total = 0;
for (int i = 0; i < v.size(); i++) {
total += v[i];
}
cout << total << endl;
cout << v[0] << endl;
}
return 0;
}
728x90