매일 BOJ
(매일 BOJ) C++ 2581번 소수
norepinephrine
2025. 7. 18. 11:48
이번 문제는 브론즈 2 난이도의 2581번 소수다.

접근법
이 문제에서 최대 입력값이 10000이기에 이 문제는 에라스토테네스의 체를 사용하지 않고도 2부터 특정값의 루트값까지 반복문을 통해 나누어 1이 되는지를 확인하면 해결할 수 있다.
작성코드
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
if (n < 2) return false;
for (int i = 2; i <= int(sqrt(n)); i++) {
if (n % i == 0) return false;
}
return true;
}
int main(void) {
ios::sync_with_stdio(0); cin.tie(0);
int M, N;
cin >> M >> N;
int sum = 0, minPrime = -1;
for (int i = M; i <= N; i++) {
if (isPrime(i)) {
sum += i;
if (minPrime == -1) minPrime = i;
}
}
if (minPrime == -1) cout << -1 << '\n'; // 소수가 없을 경우
else cout << sum << '\n' << minPrime << '\n';
return 0;
}