문제 링크 : https://www.acmicpc.net/problem/2581
문제
자연수 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을 출력한다.
입력 1
60
100
출력 1
620
61
입력 2
64
65
출력 2
-1
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
int sum = 0;
int min = 10000;
for(int i=m; i<=n; i++) {
boolean check = true;
if(i == 1) continue;
for(int j=2; j<=Math.sqrt(i); j++) {
if(i % j == 0) check = false;
}
if(check) {
sum += i;
if(min > i) min = i;
}
}
if(min == 10000) System.out.println(-1);
else {
System.out.println(sum);
System.out.println(min);
}
}
}
'Coding Test > 백준[JAVA]' 카테고리의 다른 글
[브론즈 4] 24263번 알고리즘 수업 - 알고리즘의 수행 시간 2 (0) | 2023.08.29 |
---|---|
[브론즈 5] 24262번 알고리즘 수업 - 알고리즘의 수행 시간 1 (0) | 2023.08.29 |
[브론즈 1] 9506번 약수들의 합 (0) | 2023.08.28 |
[브론즈 3] 2501번 약수 구하기 (0) | 2023.08.28 |
[실버 5] 2941번 크로아티아 알파벳 (0) | 2023.08.27 |