알고리즘/수학
[백준 2581] - [수학] - 소수
팡스
2018. 11. 27. 12:51
문제 링크 : https://www.acmicpc.net/problem/2581
이 문제는 소수이 먼저 확인하고 소수인 수를 합하고 최소값만 구하면 되는 문제이다.
입력받는 수의 최대값은 10000 이기 때문에 int 타입으로 처리가 가능하고 int 타입의 최대 수를 MIN 값으로 초기화 한 뒤에 풀면
소수일경우 최소값을 판단하는데 쉽게 판단 할 수 있다.
그리고 마지막에 결과를 반환할때 최소값의 값이 아직 int의 최대값이면 소수가 발견되지 않은거기 때문데 -1을 출력하면 된다.
소스
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int startNum = Integer.parseInt(br.readLine()); int endNum = Integer.parseInt(br.readLine()); int SUM = 0; int MIN = Integer.MAX_VALUE; for(int i = startNum; i <= endNum; i++) { if(isPrimeNumber(i)) { MIN = Math.min(MIN, i); SUM += i; } } if(MIN == Integer.MAX_VALUE) System.out.println(-1); else { System.out.println(SUM); System.out.println(MIN); } } public static boolean isPrimeNumber(int N) { if(N == 1) return false; for(int i=2; i < N; i++) { if(N % i == 0) return false; } return true; } } | cs |