-
[2581번] 소수 - Java알고리즘 연습 2021. 11. 12. 20:40
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
1. 배운점
2. 개선할 점
- N 이하 소수를 구할 때 2 ~ N-1의 범위 끝까지 반복문을 돌리지 않아도 될 것 같음. 개선점 찾아 다시 풀어볼 것!
3. 궁금한 점
4. 풀이
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { // import java.io.BufferedReader BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // M, N 받기 int startNum = Integer.parseInt(br.readLine()); int endNum = Integer.parseInt(br.readLine()); // 소수의 합과 최소값 출력하기 int total = 0; // 소수의 총합 int min = 10001; // 최솟값 초기값 // 입력한 값 만큼만 반복문 실행 for(int i = startNum; i <= endNum; i++) { int count = 0; // 2 ~ i 사이에 하나라도 나누어 떨어지는 경우 반복문 종료 for(int j = 2; j < i; j++) { if(i % j == 0) { break; } else { // 그렇지 않은 경우 확인 count++ count++; } } // 2 ~ i까지 모든 수로 나누어 떨어지지 않는 경우 총합++, 최솟값 비교 if (count == i - 2) { total += i; if(min > i) { min = i; } } } // 결과 출력 if(total != 0) { // 소수가 존재하는 경우 System.out.println(total); System.out.println(min); } else { // 소수가 없는 경우 System.out.println(-1); } } }
'알고리즘 연습' 카테고리의 다른 글
[10809번] 알파벳 찾기 - Java (0) 2021.11.13 [2941번] 크로아티아 알파벳 - Java (0) 2021.11.13 [2869번] 달팽이는 올라가고 싶다 - Java (0) 2021.11.11 [2839번] 설탕배달 - Java (0) 2021.11.11 [1157번] 단어공부 -Java (0) 2021.11.11