알고리즘 풀이/백준

[백준][Java] 2581번 소수

배게 2018. 4. 29. 23:15
728x90

예외는 M이 1인 경우입니다.


1 1 

-> 결과 : 

-1


1 3 

-> 결과 : 

5

2


sosu라는 변수를 통해 일단 sosu라고 가정한 후

sosu가 아닌 조건 즉, 숫자가 1이라 count가 1인 경우와

count가 2일 때, 해당 값까지 for문이 미치지 못한 경우를

구분하여

소수일 때만 sum값에 더해주면 됩니다.

최소값을 편하게 구하기 위해 큰 값부터 소수판별을 시작해서 작은 값으로

내려갑니다.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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 sum=0,min=-1;
		
		
		for(int i=N;i>=M;i--) {
			
			int count=0;
			int sosu=1;
			
			for(int j=1;j<=i;j++) {
				if(i%j==0) count++;
				if(count==2 && j<i) {
					sosu=0;
					break;
				}
			}
			if(count==1) sosu=0;
			
			if(sosu==1) {
				sum+=i;
				min=i;
			}
		}
		
		if(min!=-1) {
			System.out.println(sum);
			System.out.println(min);
		}
		else System.out.println(min);
		
		
	}
}