알고리즘

[백준/Java]Q2581

  • -
반응형

백준 알고리즘 9단계 기본 수학2 2581번 문제입니다.


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

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

[조건]
- M과 N은 10000이하의 자연수이며, M은 N보다 작거나 같다.
- M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
- M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

풀이

이전 문제(1978번)의 연장선으로 이전 문제가 테스트 개수만큼 입력받은 수의 소수를 구했다면 이 문제는 입력받은 M, N 사이의 소수를 구해야했다.

소수를 구하는 방식은 동일하게 사용하고 조건을 구하는 식만 추가했다.

 

소스
package com.baek.algo.step09;

import java.util.Scanner;

public class Q2581 {

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

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

		for(int i = m; i <= n; i++) {
			boolean pNum = true;

			if(i > 1) {
				for(int j = 2; j < i; j++) {
					if(i % j == 0) {
						pNum = false;
						break;
					}
				}

				if(pNum == true) {
					sum = sum + i;
					min = i < min ? i : min;
				}
			}
		}

		if(sum == 0) {
			System.out.println(-1);
		} else {
			System.out.println(sum);
			System.out.println(min);
		}

		sc.close();
	}
}
반응형

'알고리즘' 카테고리의 다른 글

[백준/Java]Q4948  (0) 2021.07.21
[백준/Java]Q11653  (0) 2021.07.21
[백준/Java]Q1978  (0) 2021.07.21
[백준/Java]Q10757  (0) 2021.07.17
[백준/Java]Q2775  (0) 2021.07.16
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.