ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj 2581
    카테고리 없음 2021. 8. 15. 03:13

    먼저 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;
    	}
    }

    댓글

Designed by Tistory.