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

'알고리즘 문제' 카테고리의 다른 글

[백준] 1753번 최단경로  (0) 2020.02.04
[백준] 11279번 최대 힙  (0) 2020.02.03
[백준] 1427번 소트인사이드  (0) 2020.02.03
[백준] 1920번 수 찾기  (0) 2020.02.03
[백준] 2869번 달팽이는 올라가고 싶다  (0) 2020.02.03

+ Recent posts