티스토리 뷰

문제

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최소값을 찾는 프로그램을 작성하시오.

예를 들어 M=60, N=100이 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최소값은 61이 된다.

입력

입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.

M과 N은 10,000이하의 자연수이며, M은 N보다 같거나 작다.

출력

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최소값을 출력한다. 

단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

예제 입력 

60
100

예제 출력 

620
61


코드


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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package math;
 
import java.util.Scanner;
 
/**
 * https://www.acmicpc.net/problem/2581
 * 소수
 * @author minjung
 *
 */
public class baekjoon_2581 {
 
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        
        int M = 0;
        int N = 0;
        
        while ( N <= M || M > 10000 || N > 10000) {
            M = sc.nextInt();
            N = sc.nextInt();
        }
        
        int sum = 0;
        int min = 0;
        int first = 0;
        
        boolean isPrime = true;
        
        if ( M == 1 ){
            M = 2;
        }
    
        forint i = M; i <= N; i++ ){
            for ( int j = 2; j < i; j++) { //소수 찾기
                if( i == 2 ) {
                    min = 2;
                    sum += 2;
                    first = 1;
                    break;
                }
                
                if ( i%j == 0 ){
                    isPrime = false;
                    break;
                }
                
                else {
                    isPrime = true;
                }
                
            }
            
            if ( isPrime && first == 0 ) { //최소값
                min = i;
                sum += i;
                first = 1;
            }
            
            else if( isPrime ){ //소수들의 합
                sum += i;
            }
        }
        
        if ( min == 0 ){
            System.out.println(-1);
        }
        else {
            System.out.println(sum);
            System.out.println(min);
        }
    }
}
 
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함