티스토리 뷰

백준

백준 소스코드 [C++] 2581 소수

Hani_Levenshtein 2020. 11. 9. 09:00

www.acmicpc.net/problem/2581

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

백준 소스코드 [C++] 2581 소수

#include <iostream>
#include <algorithm>
#include <queue>
#include <string.h>
#include <limits.h>
#include <vector>
#include <math.h>
#include <stack>
#include <bitset>
#include <string>
typedef long long ll;
using namespace std;

int main() {
	ios_base::sync_with_stdio(false), cin.tie(nullptr);
	int n, k, count = 0;
	cin >> k;
	cin >> n;
	int *arr=new int[n];

	for (int i = 2;i <= n;i++) arr[i] = i;
	for (int i = 2;i <= n;i++) {
		if (arr[i] == 0) continue;
		for (int j = i+i;j <= n;j+=i)arr[j] = 0;
	}
	int sum = 0,minvalue=INT_MAX;
	for (int i = n;k<=i;i--) 
		if (arr[i] != 0) {
		sum += arr[i];
		if (minvalue > arr[i])minvalue = arr[i];
	}
	if (sum == 0) cout << "-1";
	else cout << sum << '\n' << minvalue;
	return 0;
}

 

댓글