반응형

 

 

 

<코드>

import java.util.*;
public class Main {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int M = sc.nextInt();
		int N = sc.nextInt();
		int ans = 0;
		int min_primenum = 10000;
		
		boolean check[] = new boolean[10001]; 
		for (int i = 0; i <= 10000; i++) {
			check[i] = true;
		}
		
		for (int i = 2; i <= Math.sqrt(10000); i++) {
			for (int j = i+i; j <= 10000; j += i) {
				check[j] = false;
			}
		}
		check[0] = false;
		check[1] = false;
		
		for (int i = M; i <= N; i++) {
			if(check[i]) {
				ans += i;
				min_primenum = Math.min(min_primenum, i);
			}
		}
		
		if(ans == 0) System.out.println(-1);
		else {
			System.out.println(ans);
			System.out.println(min_primenum);
		}
	}
}

 

풀이 방법

에라토스테네스의 체를 이용해서 풀이를 하였습니다.

https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4

 

 

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

 

2581번: 소수

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

www.acmicpc.net

 

반응형

+ Recent posts