728x90
문제
https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
코드
각 줄마다 정수 n이 주어질 때, n이 완전수라면, n이 아닌 약수들의 합으로 나탄내어 출력한다. (입력의 마지막엔 -1이 주어진다.)
- 완전수 : 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같은 수
- 완전수가 아니라면 n is NOT perfect.를 출력한다.
- 약수들을 나열할 때, 오름차순으로 나열해야 한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
int n = Integer.parseInt(br.readLine());
if (n == -1) {
break;
}
// 약수를 담기 위한 리스트
List<Integer> divisorList = new ArrayList<>();
// 약수들의 합
int sum = 0;
// 리스트에 약수들을 담으면서 합 구하기
for (int i = 1; i < n; i++) {
if (n % i == 0) {
sum += i;
divisorList.add(i);
}
}
StringBuilder sb = new StringBuilder();
sb.append(n);
// 완전수인 경우
if (sum == n) {
sb.append(" = ");
for (int i : divisorList) {
sb.append(i).append(" + ");
}
sb.delete(sb.length() - 3, sb.length());
// 완전수가 아닌 경우
} else {
sb.append(" is NOT perfect.");
}
System.out.println(sb);
}
}
}
728x90