sliver__

백준 - 소수(2581) 본문

CS/알고리즘

백준 - 소수(2581)

sliver__ 2021. 11. 18. 14:10
728x90

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

 

2581번: 소수

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

www.acmicpc.net

소수

 

주어진 m,n 사이의 소수들의 합과 가장 작은 소수를 출력하는 문제이다

 

제출한 코드는 아래와 같습니다.

 

#include <iostream>
#include <climits>
using namespace std;

int arr[10010];

void getPrime()
{
	arr[1] = 0;
	arr[0] = 0;
	for (int i = 2; i * i < 10010; ++i)
	{
		for (int j = i + i; j < 10010; j+=i)
		{
			if (arr[j] == 1) arr[j] = 0;
		}
	}
}

int main(void)
{
	int m, n, sum = 0, min = INT_MAX;
	cin >> m >> n;
	for (int i = 0; i < 10011; i++) arr[i] = 1;
	getPrime();
	for (int i = m; i <= n; i++)
	{
		if (arr[i] == 1)
		{
			sum += i;
			if (min > i)
			{
				min = i;
			}
		}
	}
	if (min == INT_MAX) cout << "-1";
	else cout << sum << endl << min;
}
728x90

'CS > 알고리즘' 카테고리의 다른 글

백준 - 소수 구하기(1929)  (0) 2021.11.18
백준 - 소인수분해(11653)  (0) 2021.11.18
백준 - 소수찾기(1978)  (0) 2021.11.18
백준 - Fly me to the Alpha Centauri(1011)  (0) 2021.11.17
백준 - 큰 수 A+B(10757)  (0) 2021.11.17
Comments