반응형
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 |