https://www.acmicpc.net/problem/2581
백준 2581번 소수 문제 링크입니다.
핵심
두 수를 입력받고 두 수사이의 값 중 소수의 합을 구하고 최솟값을 구하는 문제이다.
정답 코드
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int M = sc.nextInt();
int N = sc.nextInt();
int sum=0;
int min=N;
for(int i =M; i<=N;i++) {
for(int j = 2; j<=i;j++) {
if(i%j==0) {
if(i==j) {
sum+=i;
min = (min>i)?i:min;
}
break;
}
}
}
if(sum==0)System.out.println(-1);
else {
System.out.println(sum);
System.out.println(min);
}
}
}
해설
두 수 M과 N을 받고, 그 사이의 값만을 반복한다.
소수는 자기 자신과 1로만 나누어진다.
따라서 2부터 나누어 0이 되는 값을 구한다.
만약 소수가 아니라면 I와J가 같은 값이 되기 전에 나머지가 0이 된다.
소수라면 I와 J가 같은 값이 되어서야 나머지가 0이 된다. 그 값들을 모두 더한다.
또한 최솟값은 처음에 가장 큰 값인 N을 min에 대입한 뒤 이후 값을 비교하는 형식으로 나타내었다.
이 값(min)은 처음 나온 소수를 저장하게 된다.
sum이 0이라면, 소수가 1개도 나오지 않은 것이므로 -1을 출력한다.
개선점이나 오류가 있다면, 댓글로 알려주시면 감사하겠습니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
[백준]2798번 블랙잭(java) (0) | 2022.07.04 |
---|---|
[백준]2108번 통계학(java) (1) | 2022.07.04 |
[백준]2838번 설탕 배달(java) (2) | 2022.07.04 |
[백준]10757번 큰수A+B(java) (0) | 2022.07.04 |
[백준]4673번 셀프넘버(java) (0) | 2022.07.04 |