완전수 구하기 - 제1회 구름코드챌린지 기출 문제

in #kr7 years ago

algorithm.png

문제



완전수란 자신을 제외한 모든 약수의 합이 자신과 같은 수를 말합니다.

이 문제를 통해 범위를 입력하고 해당 범위 내의 완전수들을 출력하는 프로그램을 작성할 것 입니다.

*완전수 예 : 6 // 6의 약수 1, 2, 3, 6 => 1 + 2 + 3 = 6 (완전수)

만약 입력받은 범위 내에 완전수가 존재하지 않으면 "No Answer!" 를 출력합니다.

출처 - 구름



풀이


public class Hello {
    public static void main(String[] args) {
        // 두 수 입력
        int number1 = 1;
        int number2 = 100;

        // 완전수를 찾았는지 기록하는 플래그
        boolean found = false;

        // 주어진 범위를 순환
        for (int i = number1; i <= number2; i++) {
            int sum = 0;
            // 범위 내 숫자 하나씩 완전수인지 검사
            for (int j = 1; j < (i / 2) + 1; j++) {
                if (i % j == 0) {
                    sum += j;
                }
            }

            // 만약 sum 이 i 와 같다면 완전수
            if (sum == i) {
                System.out.println(i);
                found = true; // 플래그 변경
            }
        }

        // 찾았는지 검사
        if (!found) {
            System.out.println("No Answer!");
        }
    }
}


> java Hello
6
28