백준

백준 9506 약수들의 합(Java)

Park DJ 2023. 1. 17. 02:22

https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.  예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net


 

해석 및 팁

 


 

꼼수이지만 쉽게 풀수 있는 방법이 있습니다. 문제에서는 완전수 일때 약수들의 합으로 출력하고 아닌경우에는 n is NOT perfect. 를 출력하라고 합니다. 이때 완전수의 100,000까지의 완전수는 6, 28, 496, 8128 만존재합니다. 따라서 4개의 수를 제외하면 n is NOT perfect.를 출력하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

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

    while(true) {
      int n = sc.nextInt();
      if(n == -1) break;
      else if(n == 6) System.out.println("6 = 1 + 2 + 3");
      else if(n == 28) System.out.println("28 = 1 + 2 + 4 + 7 + 14");
      else if(n == 496) System.out.println("496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248");
      else if(n == 8128) System.out.println("8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064");
      else System.out.println(n+" is NOT perfect.");
    }

  }
}