Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 1747
  • 백준 1914
  • 백준 3049
  • 백준 2591
  • Java
  • 백준 16926
  • 백준 2343
  • 백준 3135
  • 백준 24039
  • 백준
  • 백준 10709
  • 백준 7662
  • 백준 1495
  • 백준 12871
  • 자바
  • 백준 14582
  • 백준 4659
  • 백준 7567
  • 백준 15655
  • 백준 15312
  • 백준 2225
  • 백준 15961
  • 백준 1011
  • 백준 1064
  • 백준 2467
  • 백준 8892
  • 백준 1531
  • 백준 6550
  • 백준 12605
  • 백준 16194
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 2581 소수(Java)
백준

백준 2581 소수(Java)

2023. 1. 19. 23:05

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

 

2581번: 소수

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

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 자연수 n과 m이 주어질 때 n이상 m이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 문제입니다. 먼저 소수를 판별해야 하기 때문에 n부터  m까지의 반복문 안에서 해당수를 1부터 자기 자신까지 나누었을 때의 경우가 2인 경우면 소수이므로 sum에 더해주고 min과의 비교를 통해 최솟값을 찾으면 됩니다. 마지막으로 sum이 0인 경우는 소수가 없는 경우이므로 -1을 출력해 주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    int m = sc.nextInt();
    int sum = 0;
    int min = 10000;

    for(int i = n; i <= m; i++) {
      int count = 0;
      for(int j = 1; j <= i; j++) {
        if(i % j == 0) count++;      //약수인 경우 count++
      }
      if(count == 2) {               //양의 약수가 2인경우 = 소수
        sum += i;
        if(min > i) min = i;
      }
    }
    
    if(sum == 0) System.out.println(-1);     //소수가 없는 경우
      
    else {
    System.out.println(sum);
    System.out.println(min);
    }
    
  }
}

'백준' 카테고리의 다른 글

백준 10814 나이순 정렬(Java)  (0) 2023.01.20
백준 11650 좌표 정렬하기(Java)  (0) 2023.01.19
백준 1427 소트인사이드(Java)  (0) 2023.01.19
백준 7568 덩치(Java)  (1) 2023.01.19
백준 1181 단어 정렬(Java)  (0) 2023.01.19
    '백준' 카테고리의 다른 글
    • 백준 10814 나이순 정렬(Java)
    • 백준 11650 좌표 정렬하기(Java)
    • 백준 1427 소트인사이드(Java)
    • 백준 7568 덩치(Java)
    Park DJ
    Park DJ

    티스토리툴바