-
먼저 1은 소수가 아니다. 제곱근까지보는 소수판별법에서 i*i <= n 으로 한다. ( 소수 제곱인 경우 생각)
두개만 조심하면 된다.
#include <bits/stdc++.h> using namespace std; bool isPrime(int x) { if (x == 1) return false; if (x == 2 || x == 3) return true; if (x % 2 == 0) return false; for (int i = 3; i * i <= x; i += 2) { if (x % i == 0) return false; } return true; } int main(void) { int M, N, sum=0, mi=0; cin >> M >> N; for (int i = M; i <= N; i++) { if (isPrime(i)) { if (mi == 0) mi = i; sum+=i; } } if (mi == 0) cout << "-1"; else { cout << sum << "\n" << mi; } }