반응형

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

 

2581번: 소수

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

www.acmicpc.net

 

소수를 미리 구해놓고, 범위에 해당하는 값을 구해주었습니다

 

#include <cstdio>
#define MAX 10001

int m, n, sum = 0, mn = MAX;
bool notPrime[MAX] = { false };

int main() {
	notPrime[1] = true;
	for (int i = 2; i < MAX; i++) {
		if (notPrime[i]) continue;
		for (int j = i + i; j < MAX; j += i)
			notPrime[j] = true;
	}
	scanf("%d %d", &m, &n);
	for (int i = m; i <= n; i++) {
		if (!notPrime[i]) {
			sum += i;
			if (mn == MAX) mn = i;
		}
	}
	if (sum == 0) printf("-1");
	else printf("%d\n%d", sum, mn);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 1759 : 암호 만들기  (0) 2021.11.19
백준 14567 : 선수과목 (Prerequisite)  (0) 2021.11.19
백준 1747 : 소수&팰린드롬  (0) 2021.11.19
백준 1240 : 노드사이의 거리  (0) 2021.11.19
백준 15900 : 나무 탈출  (0) 2021.11.19

+ Recent posts